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