【问题标题】:Use RSpec's "expect" etc. outside a describe ... it block在描述之外使用 RSpec 的“期望”等...它阻止
【发布时间】:2014-05-13 07:00:39
【问题描述】:

我正在构建一个网络应用自动化框架,旨在允许:

  • 当然是自动化任务
  • 轻松构建测试场景

我正在使用 Capybara 与浏览器进行通信,并且我有一个包含许多辅助函数(login_to_the_back_office、create_customer 等)的组件库。

现在我希望我的组件可以独立使用,也可以在 RSpec 测试中使用。这意味着我的组件(包含在库中)默认情况下不会包裹在 describe... it... 块周围,但是当测试使用它们时它们会在某个时候出现,因此它们应该尽可能频繁地使用 expect 和朋友。

我按照rspec's .should fails (outside describe/it block) in Ruby 2? 启用should 并且它可以工作(实际上只需要rspec-expectations 在我的情况下就足够了),但我不知道如何让expect 工作。

我认为 expect 在这里定义 https://github.com/rspec/rspec-expectations/blob/master/lib/rspec/expectations/syntax.rb 但我对 Ruby 元魔法的了解太有限,无法弄清楚如何让我的班级可以使用期望。

我已经尝试在课堂上包含RSpec::Expectations::Syntax,但每当我尝试使用它时,我仍然会收到undefined method 'expect'

如何在describe... it... 之外使用expect

【问题讨论】:

    标签: ruby rspec


    【解决方案1】:

    包括::RSpec::Matchers

    class A
      include ::RSpec::Matchers
      def test
        expect('1'.to_i).to eq 1
      end
    
      def failed_test
        expect('1'.to_i).to eq 2
      end
    end
    A.new.test
    # => true
    A.new.failed_test
    # RSpec::Expectations::ExpectationNotMetError: 
    # expected: 2
    #      got: 1
    

    【讨论】:

    • 耶!!必须是我没有尝试过的唯一模块,包括:) 谢谢!
    • @UriAgassi +1 我应该开始向你学习 RSpec 课程。 :D BTW 恭喜stackoverflow.com/tags/ruby/topusers
    • @uri-agassi 如何让expect 在代码运行时回显断言?比
    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多