我正在学习Rails的Rspec并寻找一种方法来确保简单地创建一个没有提供名称的类实例将不会成功。如何通过更改Dog类代码来使下面的测试通过?
class Dog < ActiveRecord::Base
validates_presence_of :dog_name
end
describe Dog do
it "requires a dog name to be created" do
dog = Dog.new(dog_name: nil)
expect(dog.save).to be_false
end
end
知道如何编写另一个测试来验证当设置了dog_name以成功创建记录时,也会有所帮助。
答案 0 :(得分:2)
我强烈建议您查看shoulda-matchers宝石。这将使您可以非常轻松地进行这些测试。使用shoulda-matchers
,您的测试将是:
describe Dog do
context 'validations' do
it { should validate_presence_of(:dog_name) }
...
end
end
答案 1 :(得分:0)
您的测试没有任何问题。如果您的系统设置正确,它应该通过。如果您需要帮助来理解它当前失败的原因,您需要分享您所获得的错误。
对于成功创建的测试,您需要提供有关您尝试过的内容或您正在使用的参考资料的更多信息,以便满足SO问题质量要求。
答案 2 :(得分:-4)
describe Dog do
it "requires a dog name to be created" do
dog = Dog.create(dog_name: nil)
expect(dog).to have(1).error_on(:dog_name)
end
end