我目前正在 subject
中创建一个对象,需要测试这是否会引发异常。以下代码说明了我要实现的目标:
describe MyClass do
describe '#initialize' do
subject { MyClass.new }
it { is_expected.not_to raise_error(Some::Error) }
end
end
我有一种感觉,我正在以错误的方式处理这件事。将 subject
设置为新对象而不创建对象两次的首选方法是什么?
更新
我的问题有两个。首先,这种语法不起作用:
it { is_expected.not_to raise_error }
但是,在 it
block 中使用 expect
确实如此(正如 Jimmy Cuadra 所指出的):
it 'does not raise an error' do
expect { subject }.not_to raise_error
end
我对 RSpec 还不够熟悉,无法告诉你这是为什么。
其次,自 RSpec 3.0.0.beta1 , 可以更长的时间将 raise_error
与特定的错误类一起使用。因此,以下内容无效:
expect { subject }.to raise_error(Some::Error)
有关详细信息,请参阅
最佳答案
如果我没理解错的话,您是在尝试测试实例化一个类是否会导致异常。你只需这样做:
describe MyClass do
it "doesn't raise an exception when instantiated" do
expect { subject }.not_to raise_error
end
end
关于ruby - 如何检查我的主题是否引发异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24983923/