如何解决Minitest 似乎没有为 ShouldaMatchers
我有一个 Rails 项目,我正在尝试使用 MiniTest 和 ShouldaMatchers 进行简单的验证测试,但它不起作用。我需要在模型字段之一上测试包含,确保它只接受特定值。此模型与其他模型有多个关联,因此我尝试覆盖默认 subject
值以创建我自己的对象实例,并显式设置关联。但是,subject
值的这种显式设置似乎不起作用。我有这样的事情:
subject { build(:obj_under_test,ascoc_1_id: @ascoc_1_instance.id,assoc_2_id: assoc_2_instance.id) }
should validate_inclusion_of(:field).in_array([1,2,3])
这会失败并出现错误 NoMethodError: undefined method 'attribute_setter' for nil:NilClass
,据我所知,这是在我当前版本的 ShouldaMatchers 下断言失败时显示的内容(我使用的是 v3.4,发行说明表明这已更正为更多内容)在 v4.0 中有意义。)很难确切地说出测试内部发生了什么,但是如果我将 subject
声明包装在像这样的设置块中
setup do
subject { build(:obj_under_test,assoc_2_id: assoc_2_instance.id) }
binding.pry
end
并在其中放置一个 binding.pry
;然后运行测试并检查 subject
值,它只显示没有任何关联的裸对象。这很重要,因为验证依赖于存在的关联值,因此它会失败,因为关联对象为零。谁能解释为什么没有覆盖 subject
值以及如何正确设置它?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。