如何在 Rspec 中规范 validates_uniqueness_of?

发布于 2024-10-21 11:57:26 字数 87 浏览 1 评论 0原文

如何做到这一点?无法在线找到任何示例...(使用rspec 2.5.0 & rails 3.0.5

How does one do this? Couldn't find any examples online... (using rspec 2.5.0 & rails 3.0.5)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

想你的星星会说话 2024-10-28 11:57:26
before(:each) do
  @attr = { :bar => "foobar" }
end

it "should reject duplicate bar" do
  Foo.create!(@attr)
  duplicate_bar = Foo.new(@attr)
  duplicate_bar.should_not be_valid
end
before(:each) do
  @attr = { :bar => "foobar" }
end

it "should reject duplicate bar" do
  Foo.create!(@attr)
  duplicate_bar = Foo.new(@attr)
  duplicate_bar.should_not be_valid
end
策马西风 2024-10-28 11:57:26

不确定这是否正是您要查找的内容,但您可以在保存更新后检查错误消息,

@widget.save
#untested, but this should be close
@widget.errors.full_messages.include?("validation message you are looking for").should be true

但老实说,这可能不是您需要测试的内容在你的单元测试中(如果这是你放置它们的地方)。您基本上是在重复 Rails 已经为您完成的单元测试。在 Cucumber 集成测试中检查视图中的错误消息会更合适。

Not sure if this exactly what you are looking for, but you could check the error messages after the save or update

@widget.save
#untested, but this should be close
@widget.errors.full_messages.include?("validation message you are looking for").should be true

But honestly, this is probably not something that you need to test in your unit tests (if that is where you are placing them). You are basically duplicating unit tests that Rails has already done for you. It would be more appropriate to check for the error message in the view in a cucumber integration test.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文