我正在寫使用測試我的第一個測試:單元和早該,所以這可能是我的一個簡單的誤會,但由於不包含驗證一個頁面模型和測試:爲什麼這個測試結果倒退?
#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"
,因爲如果我測試的驗證存在,你會期望從驗證中發現一個錯誤,當slug爲零時,slug「不能爲空」。
測試通過,如果我添加驗證,但我想看到它首先正確地失敗!
此外,爲什麼第一次測試通過?我的頁面模型不包含belongs_to
關聯!
測試很爛! :-(
應該在哪個對象上被調用嗎?不應該測試有上下文和描述嗎?'it'子句在哪裏?這是RSpec,不是嗎? – 2013-05-05 12:29:13
不, Test :: Unit with shoulda - 認爲最好在學習RSpec之前學習「Rails方式」。 – Matt 2013-05-05 12:52:18