Shoulda教程之二—上下文

本文介绍Shoulda测试框架的上下文(Context)概念,演示如何通过上下文组织测试代码,实现更清晰、可读性强的测试案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文:http://thoughtbot.com/projects/shoulda/tu×ial/context 上下文 在学习了Should语句之后,Shoulda的更多基本构建代码的知识就是上下文(Context)。上下文创建一个运行should语句的类似场景的fixture。Context代码块可以包含 setup/teardown 代码块,should代码块,或者其他context代码块。下面来试试在测试中使用简单的context: class QueueTest < Test::Unit::TestCase  context "一个队列实例" do   setup do    @queue = Queue.new   end     should "响应 :push 调用" do    assert_respond_to @queue, :push   end  end end 这里创建了一个名为”测试:一个队列实例可以响应:push调用”的测试方法,这很漂亮和易读。 嵌套 上面详尽的测试,简单测试队列的实例响应:push调用,但也提出了更多的上下文和测试。现在想看看让队列返回任何放进其中的东西。来添加一个嵌套的上下文进到其中: class QueueTest < Test::Unit::TestCase  context "一个队列实例" do   setup do    @queue = Queue.new   end     should "响应 :push 调用" do    assert_respond_to @queue, :push   end     context "具有一个元素" do    setup { @queue.push(:something) }      should "在:pop调用后返回元素" do     assert_equal :something, @queue.pop    end   end  end end 上面生成了测试方法”测试:一个队列实例应该响应:push调用”和”测试:一个队列实例具有一个元素应该在:pop调用后返回元素”。 注意一下,上下文的setup代码块是为每个should代码块运行一次的。首先@queue实例被创建出来,然后:something被放进去,接着执行assert_equal。下面用一个同样语意的测试方法虚拟地演示一下,记住下面的代码只是为了帮助理解,并不会实际的发生: define_method "测试:一个队列实例有一个元素应该在:pop调用后返回元素。" do  @queue = Queue.new  @queue.push(:something)  assert_equal :something, @queue.pop end 现在,如果使用一般的测试风格,就会在一个测试方法中,把一个元素放进队列中并在一个测试方法中把元素取出来,然后进行断言。但是将这个测试分离出来放到一个测试push的上下文时,就可以添加更多的共享同样setup的测试。 class QueueTest < Test::Unit::TestCase  context "一个队列实例" do   setup do    @queue = Queue.new   end     should "响应 [...]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值