let
値をスペック内に上書きすることはできますか?上書きすることができます。paramsを変更して件名に送信する
subject {
MyClass.new params
}
let(:params) { {} }
describe '#initialize' do
it 'should set new params' do
params = {a: 1}
expect{ subject }.to do_something
end
it 'should raise with string' do
params = 'string'
expect{ subject }.to raise_error
end
end
または何これにアプローチするための正しい方法は次のとおりです。私は、のようなものを対象に設定し、各テスト中に私のparamsを変更できるようにしたいですか?全体のクラス名で私のexpect{}
を書きますか?
subject { -> { MyClass.new(params) } } # Note: subject is a lambda
describe '#initialize' do
context 'with blank params' do
let(:params) { {} }
it { is_expected.to do_something }
end
context 'with string params' do
let(:params) { 'string' }
it { is_expected.to raise_error }
end
end
をしかし - 最大pleanerがすでに言ったように - この単純な例では、おそらくsubject
をスキップしてちょうど直接MyClass.new ...
コールを使用し、より読みやすく、保守し、次のようになります。
私は各テストケースにMyClass.newを入れたり、ヘルパー関数に移動したりします。 –