let
값을 사양에 덮어 쓸 수 있습니까? 각 테스트마다 다음과 같이 주제를 설정하고 매개 변수를 수정할 수 있기를 원했습니다.덮어 쓰기를 사용하여 매개 변수를 변경하는 방법
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
또는이 접근 방법은 무엇입니까? 전체 클래스 이름으로 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를 넣거나 도우미 함수로 옮길 것이다. –