gpt4 book ai didi

ruby - RSpec、隐式主题和异常

转载 作者:数据小太阳 更新时间:2023-10-29 07:26:17 24 4
gpt4 key购买 nike

有没有办法正确测试 rspec 中隐式主题的异常引发?

例如,这失败了:

describe 'test' do
subject {raise 'an exception'}
it {should raise_exception}
end

但这过去了:

describe 'test' do
it "should raise an exception" do
lambda{raise 'an exception'}.should raise_exception
end
end

这是为什么?

最佳答案

subject 接受一个 block ,该 block 返回余数的主题。

你要的是这个:

describe 'test' do
subject { lambda { raise 'an exception' } }
it { should raise_exception }
end

编辑:来自评论的澄清

这个:

describe 'test' do
subject { foo }
it { should blah_blah_blah }
end

或多或少等同于

(foo).should blah_blah_blah

现在,考虑:没有 lambda,这变成:

(raise 'an exception').should raise_exception

请看这里,在评估主题时会引发异常(在调用 should 之前)。而对于 lambda,它变成了:

lambda { raise 'an exception' }.should raise_exception

这里,主题是 lambda,它仅在评估 should 调用时(在将捕获异常的上下文中)评估。

虽然每次都会重新评估“主题”,但它仍然必须评估您想要调用应该的事物。

关于ruby - RSpec、隐式主题和异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6837663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com