我想执行一些代码,然后用多个it语句测试结果,而不必运行代码。
fun = @(x,y) x.^2 + y.^2;
xmin = 0; xmax = 5;
ymin = -5; ymax = 0;
q = integral2(fun,xmin,xmax,ymin,ymax); % q = 4.166666666667348e+02
如果您查看执行,它看起来像:
在A.1之前-T1-在A.1之前-T2-在A.1之前-T3-在B.1之前-T1-...
但是我想要:
在A.1之前-T1-T2-T3-在B.1之前-T1-T2-T3
我尝试使用before(:all),但是我不能使用它,因为我使用了很多let变量。您会收到以下错误,因为在每个上下文中let都会发生变化。
RuntimeError:让声明
context 'context A' do context 'context A.1' do before(:each) do # Doing a lot of things and using let variables,... end it 'T1: test thing 1' it 'T2: test thing 2' it 'T3: test thing 3' end context 'context B.1' do before(:each) do # Doing a lot of things and using let variables,... end it 'T1: test thing 1' it 'T2: test thing 2' it 'T3: test thing 3' end end
在var1
钩子中访问:
我可以将所有测试合并到一个it语句中,但我不希望这样,我想查看哪个particalur测试失败。我看到的唯一解决方案是摆脱所有的let变量,但这将导致大量的实例变量块和大量不同的测试文件,从而导致大量重复代码...
我可以用其他方式得到我想要的行为吗?还是我必须换一种方式看待事物?
答案 0 :(得分:1)
但是我不想要那个,我想看看哪个particalur测试失败了。
那是阻止您执行此操作的唯一方法?容易。
context 'context A.1' do
before(:each) do
# Doing a lot of things and using let variables,...
end
it 'test all the things', aggregate_failures: true do
...
end
end
您甚至可以为spec_helper.rb
中的所有规范全局启用它(这就是我要做的)。