【问题标题】:Rspec method similar to MiniTest 'assert'Rspec 方法类似于 MiniTest 'assert'
【发布时间】:2015-12-15 02:15:35
【问题描述】:

这里有一些关于从 MiniTest 更改为 Rspec(显然是使用 Ruby)来编写测试自动化的讨论。我真的喜欢 MiniTest 的 assert 网络元素的能力,因为它会在最后告诉我有关失败的信息,即 assert $b.link(:text => 'DAM').present?
Rspec 有与此等价的东西吗?我想保持这种风格,因为如果可能的话,写出来的代码行数更少

【问题讨论】:

标签: ruby rspec automated-tests


【解决方案1】:

Rspec 以与 Minitest 的断言类似的方式使用 expect()。 expect(actual).to eq(expected) 您可以深入了解https://www.relishapp.com/rspec/ 的文档。请注意,在 Rspec 中测试真相的方法很少(来自https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers):

expect($b.link(:text => 'DAM').present?).to be true      # passes if actual == true
expect($b.link(:text => 'DAM').present?).to eq true    # passes if actual == true
expect($b.link(:text => 'DAM').present?).to be_truthy    # passes if actual is truthy (not nil or false)

如果您在 rspec 中花费大量时间,您还可以为常见测试创建自定义匹配器,以扩展“be”的使用,例如

RSpec::Matchers.define :be_present do
  match do |actual|
    actual.present?
  end
end

expect($b.link(:text => 'DAM')).to be_present      # passes if $b.link(:text => 'DAM').present? == true

【讨论】:

  • 谢谢,@Tim Mulry——我阅读了有关使用 expect 的信息,但我确实需要更深入的了解
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 2012-05-14
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多