【发布时间】:2017-02-24 11:09:35
【问题描述】:
我正在尝试使用 shoulda 匹配器进行一些基本的 rspec 测试,但我遇到了一个我之前从未在 SO 上看到过的错误。
我有一个名为 name 的唯一属性,但由于项目所需的原因,我在 config/locales/en.yml 中用我自己的消息形式覆盖了默认的“已被采用”消息,而应该没有好像很喜欢。
我收到了这个错误信息
Failure/Error: it { should validate_uniqueness_of(:name) }
Flavor did not properly validate that :name is case-sensitively unique.
Given an existing Flavor whose :name is ‹"Factory Flavor Namea"›,
after making a new Flavor and setting its :name to ‹"Factory Flavor
Namea"› as well, the matcher expected the new Flavor to be invalid and
to produce the validation error "has already been taken" on :name. The
record was indeed invalid, but it produced these validation errors
instead:
* name: ["This flavor name is already in the system"]
* abbreviation: ["This abbreviation is already in use"]
我在 shoulda-matchers 中是否缺少允许测试通过而不必担心错误消息的设置,或者这是模块的限制?
【问题讨论】:
-
您是否在 Flavor 模型中为 name 而不是 'validate_uniqueness_of(:name)' 设置原始验证和错误消息?
-
@YTorii 对不起 - 我不明白这个问题
-
哦,对不起。错误消息说,唯一性验证成功,但错误消息与预期不同(Rails 的唯一性默认错误消息)。所以我猜原来的错误信息是在模型中手动设置的。
标签: ruby-on-rails rspec activemodel shoulda