最佳答案
我已经开始了 Rails 中的 TDD 之旅,遇到了一个关于模型验证测试的小问题,我似乎找不到解决方案。假设我有一个用户模型,
class User < ActiveRecord::Base
validates :username, :presence => true
end
和一个简单的测试
it "should require a username" do
User.new(:username => "").should_not be_valid
end
This correctly tests the presence validation, but what if I want to be more specific? For example, testing full_messages on the errors object..
it "should require a username" do
user = User.create(:username => "")
user.errors[:username].should ~= /can't be blank/
end
我对初始尝试(使用 should _ not be _ valid)的担心是 RSpec 不会产生描述性错误消息。它只是说“期望有效?”?返回虚假,得到真实。”但是,第二个测试示例有一个小缺点: 它使用 create 方法而不是 new 方法来获取错误对象。
我希望我的测试能够更具体地说明它们在测试什么,但同时又不必触及数据库。
有人有什么想法吗?