`
chenk85
  • 浏览: 44536 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Shoulda教程之二—上下文

 
阅读更多
原文: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 "响应 [...]
分享到:
评论

相关推荐

    Shoulda教程中文版PDF

    ### Shoulda教程中文版知识点详解 #### 一、Shoulda简介 Shoulda 是一个 Ruby on Rails 的测试插件,它让 Test::Unit 测试框架具备了行为驱动开发(Behavior Driven Development, BDD)的特性。通过使用 Shoulda,...

    实用旅游英语教程第二版练习答案和翻译.ppt

    在《实用旅游英语教程第二版练习答案和翻译》中,我们发现了一系列与英语学习和旅游行业相关的练习题和翻译。这些练习旨在帮助学生提升在旅游情境中的英语沟通能力,包括填写空白、句子构造以及理解与旅游相关的专业...

    新视野大学英语第三册读写教程答案

    这些词汇均来自本单元的重点词汇列表,学生需要在理解上下文的基础上选择合适的词汇填入空白处。 **IV. 短语填空** 这部分考察学生对短语的掌握情况,要求学生根据上下文选择正确的短语填空,例如: 1. **tell…on...

    研究生精读Unit4作业答案解析.doc

    15. “The unusual phenomenon…” 这个句子没有给出完整的信息,可能是关于某个独特现象的讨论,需要结合上下文理解。 这些题目和表达涵盖了社会、经济、教育、职业、犯罪、健康、媒体等多个领域的知识,对于研究...

    新GRE填空绿皮书

    - **解析**:根据上下文,“I found her gravity rather intimidating”表明最初作者对她的庄重感到害怕,但后面提到“found that ______ was very near the surface”,这表示作者后来发现她其实很亲切,因此选择...

    Android 接口详解

    例如,一个类可以同时实现`MyInterface1`和`MyInterface2`,这样该类的对象就可以根据不同的上下文执行不同的操作。 6. **动态绑定接口** Android中的EventBus、RxBus等框架使用接口进行事件发布和订阅,这种动态...

    赵丽语法讲义 赵丽语法讲义

    4. **语态**:主动语态和被动语态的转换,以及如何根据上下文选择合适的语态表达。 5. **情态动词**:can、could、may、might、must、shall、should、will、would等情态动词的用法和含义。 6. **非谓语动词**:...

    SignalR 2.0 and MVC 5即时通讯完整版示例

    这个简单的聊天应用程序不会维护服务器上的讨论上下文。该集线器向所有当前用户广播评论。稍后加入聊天的用户将看到从加入时开始添加的消息。 以下屏幕截图显示了在浏览器中运行的聊天应用程序。 聊天浏览器 在...

Global site tag (gtag.js) - Google Analytics