누군가이 스펙이 실패한 이유를 설명 할 수 있습니까?이 Ruby 조건부 할당이 메모로 저장되지 않는 이유는 무엇입니까?
RSpec에 결과 : 그것은 한 번만 @presenter
를 지정해야합니다 조건 할당 연산자에 대한 이해에서
User#presenter memoizes presenter
Failure/Error: user.presenter
(<UserPresenter (class)>).new(...)
expected: 1 time with any arguments
received: 2 times with arguments: (...)
.
이UserPresenter.should_receive(:new).once
이 코드 덩어리가 단순히 UserPresenter
는 new
방법을 한 번받을 것이라는 기대를 설정 :
# app/models/user.rb
def User
def presenter
@presenter ||= UserPresenter.new(self)
end
end
# app/presenters/user_presenter.rb
class UserPresenter
end
# spec/models/user_spec.rb
describe User do
let(:user){ build_stubbed(:user) }
describe "#presenter" do
it "memoizes presenter" do
UserPresenter.should_receive(:new).once
user.presenter
user.presenter # should not call .new
end
end
end
왜 'UserPresenter.should_receive (: new) .once.with (...)'가 아닌가요? –
@ArupRakshit은 올바른 인수를 사용하여 호출되었음을 테스트하는 것이 좋지만 '수신 된 값 : 인수가있는 2 번 ...'을 변경하지 않습니다. – max
'let! (: user) {build_stubbed (: user)}'와'UserPresenter.should_receive (: new) .once.with (user)'를 할 수 있습니까? –