2014-08-29 1 views
2

어떤 이유로 RSpec 스터 빙은 내 테스트에서 사용할 수 없으며 그 이유를 알 수 없습니다. 여기 RSpec 스텁 메서드를이 개체에 추가 할 수없는 이유는 무엇입니까?

는 예를 들어 테스트입니다 :

RSpec.describe User, type: :model do 
    it "Should allow me to stub a model" do 
    u = User.new 
    u.stub(:test) 
    u.test 
    end 
end 

여기에 테스트 결과입니다 :

Failures: 

    1) Subscription Should allow me to stub a model 
    Failure/Error: u.stub(:test) 
    NoMethodError: 
     undefined method `stub' for #<User:0x007fa5cfea20c8> 
    # ./spec/models/user_spec.rb:6:in `block (2 levels) 
    in <top (required)>' 

FWIW 다음과 같이 내 사양 도우미 파일의 모의 설정 섹션은 다음과 같습니다

config.mock_with :rspec do |mocks| 
    # Enable only the newer, non-monkey-patching expect syntax. 
    # For more details, see: 
    # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ 
    mocks.syntax = :expect 

    # Prevents you from mocking or stubbing a method that does not exist on 
    # a real object. This is generally recommended. 
    mocks.verify_partial_doubles = true 
end 
+1

어쩌면 당신은 [새 구문] (https://github.com/rspec/rspec-mocks)'allow (u) .to receive (: test)' – zishe

+0

@zishe를 사용해야합니다. 예, 좋은 제안이지만 분명히 뭔가 잘못 설정되어있어 수정하는 것이 좋습니다 –

+0

'mocks.syntax'가'should'이어야합니다. 답변을 추가했습니다. – zishe

답변