一个非常简单的问题,但我一直无法找到答案:
我想在 rspec 中写下以下内容:
describe "Some examples" do
before(:all) do
if(i_forgot_to_start_some_important_background_service)
dont_run_any_tests
end
end
...
end
这可能吗?
您不需要任何特殊的 RSpec 魔法 - 只需测试您的服务是否在您的 spec_helper.rb 中运行,如果它没有运行则引发异常。
if service_not_running
raise "Service is not running. Please start it with {whatever}."
end
这将导致您的 rspec 套件在启动时立即失败,并出现一个有助于程序员启动服务的有用错误。
我不确定这是否可能,但您可以在像这样失败后立即停止 rspec:
# spec/spec_helper.rb
RSpec.configure do |c|
c.fail_fast = true
end
我认为你这样做是错误的,你应该只测试你的类/模型的行为,并依赖后台服务在这一点上是好的(存根或模拟它们并在单独的测试中测试你的后台服务。
或者如果您对此感到不舒服,请在后台服务打开和关闭时通过存根这些服务的结果来测试您的规范