2013-05-05 4 views
4

나는 시험 사용하여 내 첫 테스트를 쓰고 있어요 : 단위 및 진작을, 그래서 이것은 나의 부분에 간단한 오해 될 수 있지만 검증을 포함하지 않는 페이지 모델을 제공하고, 테스트 :왜이 테스트 결과가 거꾸로 있습니까?

#test/unit/page_test.rb  
require 'test_helper' 

class PageTest < ActiveSupport::TestCase 
    should belong_to(:site) 
    should validate_presence_of(:slug) 
end 

두 번째 예상대로 시험 (유효성 검사는 모델에 없다 주어진) 실패 :

# Running tests: 

[2/2] PageTest#test: Page should require slug to be set. = 0.02 s 
    1) Failure: 
test: Page should require slug to be set. (PageTest) [/Users/Matt/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/shoulda-context-1.1.1/lib/shoulda/context/context.rb:339]: 
Did not expect errors to include "can't be blank" when slug is set to nil, got error: 

Finished tests in 0.115436s, 17.3256 tests/s, 17.3256 assertions/s. 
2 tests, 2 assertions, 1 failures, 0 errors, 0 skips 

오류 메시지 Did not expect errors to include "can't be blank" when slug is set to nil 거꾸로 보인다 그러나. 읽을 필요가 없습니다 : Expected errors to include "can't be blank" 왜냐하면 내가 존재하는지 테스트했기 때문에 슬러그가 0 일 때 슬러그는 "비워 둘 수 없습니다"라는 오류로부터의 오류를 기대할 수 있기 때문입니다.

유효성 검사를 추가하면 테스트가 통과하지만 처음에는 올바르게 테스트하지 못합니다.

왜 첫 번째 테스트가 통과합니까? 내 페이지 모델에 belongs_to 연결이 없습니다.

테스트가 안됐다!

+0

어떤 객체에 '해야'하는 메시지가 표시됩니까? 테스트에 컨텍스트와 설명이 있어야하지 않습니까? '절'절은 RSpec이 아닙니까? –

+0

아니요, Test :: Unit with shoulda - RSpec을 사용하기 전에 "Rails 방식"을 배우는 것이 가장 좋습니다. – Matt

답변

1

:-(이 shoulda의 이전 버전에서 버그가 있었다. 당신이 더 많은 정보를 원하시면 this thread을 볼 수 있습니다.

나는 (지금 2.2.0) 최신 버전으로 업데이트

, 내가 올바른 행동을보고 Expected errors to include...과 같은 메시지

+0

확인해 주셔서 감사합니다. 첫 번째 테스트에서이 버그가 발견되었습니다. 그것이이 콤보에서 벗어나기 때문에 RSpec으로 옮겼습니다 (테스트 초보자라는 명품은 하나의 스위트 룸에 설치되지 않았습니다). 나는 연결된 스레드에서 shoulda가 장소에서 가난한 테스트 커버리지를 가지고 있다는 것을 읽었지만 즐겁다 (그리고 조금 놀랐다)! ;-) – Matt

+0

RSpec은 테스트 스위트이며, "shoulda"는 많은 "언어"중 하나입니다. 나는 네가 너를 연기했다고 들었지만 나는 그들 모두를 여전히 진심으로 추천 할만큼 충분히 오래 사용했다. –