Rspec 确保初始化工作正常,不会引发异常

Rspec 确保初始化工作正常,不会引发异常,rspec,Rspec,我想让(:variable)成为一个对象,这样我就可以在不同的上下文测试中使用这个对象。但是,同时,我希望确保在初始化对象时不会引发异常。有可能吗 现在我在一个例子中这样做。我想让第一个变量,这样它就可以跨示例重用 first_object= nil expect{first_object= StandaloneG28::Forms::G28.new(attorey_profile,application_manager: appManager)}.to_not raise_exceptio

我想让(:variable)成为一个对象,这样我就可以在不同的上下文测试中使用这个对象。但是,同时,我希望确保在初始化对象时不会引发异常。有可能吗

现在我在一个例子中这样做。我想
第一个变量,这样它就可以跨示例重用

first_object= nil
  expect{first_object= StandaloneG28::Forms::G28.new(attorey_profile,application_manager: appManager)}.to_not raise_exception
  expect{Pdf::AttributeMappings::FillableG28Applicant.new(first_object).export(false)}.to_not raise_exception
  expect{Pdf::AttributeMappings::FillableG28Sponsor.new(first_object).export(false)}.to_not raise_exception

律师配置文件和应用程序管理器是在外部上下文中定义的。

您可以声明let块,然后按如下方式对其进行测试:

let(:first_object) { StandaloneG28::Forms::G28.new(attorey_profile,application_manager: appManager)}

it 'should not throw exception' do
  expect{ first_object }.to_not raise_exception
end
这是因为在示例范围内首次调用let之前,let不会进行计算。因此,初始化过程中出现的任何异常都可以使用expect进行评估


请注意,在测试异常/错误时,您需要将大括号用于except声明,否则except甚至没有机会看到异常。

Smart。。虽然我知道这个懒惰的评估,也在问题中说“我想让你去做”,但我从未想过这一点。深夜对任何人都没有帮助。呵呵是的。。。我自己做了很多次,答案就在眼前。。。这就是额外的一双新鲜的眼睛有帮助的地方:)