ruby - 在 rspec 测试中实现前置/后置条件的更好方法

标签 ruby testing rspec metaprogramming aop

全都是关于 OOP+AOP 方法(我很熟悉)和 rspec方法(我不太熟悉)。这是我典型测试的代码。代码驻留在每个测试文件中(其中有很多):

describe "Testing... " do

before(:each) do
  assert_no_application_errors
end

after(:each) do
  assert_no_application_errors
end

it "Test1" do
  begin
    ...
  rescue => e
    puts e, e.backtrace
    print_log
    raise
  end
end # it

...

end # describe
  1. 如您所见,before(:each)after(:each)在每个测试文件中都是相同的。所以,第 4 个问题是我是否可以将它们写在一个对所有测试文件都有好处的地方。

  2. 如果 N1 可行 - 如果在某些文件中需要在 before(:each) 中应用额外的步骤会发生什么或 after(:each) ?新的声明会取代或加强之前的声明吗?

  3. rescue在同一文件中的每个测试中,部分也是相同的。将它放在一个地方的正确方法是什么?

  4. 我们非常欢迎任何其他关于如何正确做事的相关建议。

谢谢!

最佳答案

如果您希望为您拥有的每个测试触发这些断言,那么您应该配置一个全局“around”回调:

RSpec.configure do |config|
  config.around do
    assert_no_application_errors
  end
end

只需将其添加到您的 spec/spec_helper.rb 并在您的每个规范文件中要求。

有关“around”钩子(Hook)的更多信息,请阅读:http://relishapp.com/rspec/rspec-core/v/2-6/dir/hooks/around-hooks

关于ruby - 在 rspec 测试中实现前置/后置条件的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6582282/

相关文章:

database - Spring JPA : Testing DAO layer with multiple databases in a CI environment

unit-testing - rspec 单元测试具有无限循环的方法

ruby-on-rails - 使用 rspec 测试链接?

ruby-on-rails - 使用 RSpec stub ActiveRecord 动态查找器

ruby - EAFP 与 LBYL : Which is more idiomatic Ruby?

ruby - 每当 Amazon SQS 队列更新时运行 Ruby 任务

java - 在 TestNG 中关闭测试输出

java - 强制 AssertJ 按身份进行比较的惯用方法?

javascript - 充当 votable javascript 投票按钮

ruby - 从字符串加载常量,如当前范围内解析的那样