我有一个要在各个地方重复使用的主题块。
subject(:stubbed_data) do
expect(response.body).to eq(dynamic_var)
end
对于不同的测试用例,
dynamic_var
变量将有所不同。有什么方法可以用参数调用subbed_data
主题,以便让dynamic_var
变量具有动态值? 最佳答案
您不应该将参数传递给subject
。而且,顺便说一下,在这里断言是一个错误的地方(诸如expect
之类的东西),它们需要在it
块内完成。
但是,您可以在let
块中定义(并重新定义)依赖项,如下所示:
class MyClass
attr_reader :arg
def initialize(arg)
@arg = arg
end
end
RSpec.describe MyClass do
subject { MyClass.new(dynamic) }
let(:dynamic) { 'default value' }
context 'it works with default value' do
it { expect(subject.arg).to eq 'default value' }
end
context 'it works with dynamic value' do
let(:dynamic) { 'dynamic value' }
it { expect(subject.arg).to eq 'dynamic value' }
end
end
关于ruby - 如何在rspec中将参数传递给主题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49250745/