我认为在将它从v1.4.2更新到v2.7.0之后我认为是应该匹配的宝石有问题,并且失败因我运行测试的方式而异。当我正常运行当前的测试套件时,我会遇到这样的失败:
失败/错误:它{should validate_presence_of:attribute1}
包含&#34的预期错误不能为空白"当primary_first_name设置为nil时,出现错误:["不能为空(属性:\" attribute2 \",value:nil)","不能为空(属性:\" attribute3 \",值:nil)"]
当发生这种情况时,我尝试设置Spring然后Zeus加速测试(我们使用pre-Spring Rails 3.2.18),这两个都改变了错误输出。上面形式的错误消失了,但这种取代了它:
失败/错误:它{should validate_presence_of:attribute}
NoMethodError: 未定义的方法`validate_presence_of' for #RSpec :: ExampleGroups ::(Model instance)> (删除开角括号使其显示在此处)
我还发现一堆其他测试开始失败,出现了这种错误:
失败/错误:它{should have_db_column:column_name} 期望#<(模型实例>回复
has_db_column?
我发现了一个报告discussing后一个问题,但它似乎是一个应该匹配/春天的冲突,所以我不知道为什么宙斯会引起同样的问题。
我不知道第一个问题是否是潜在的或加剧了第二个问题。所有这三个宝石对我来说都是新手(我正在研究遗留代码),所以我的后备修复方法就是摆脱了应该匹配的问题(我将其更新为对它似乎造成的另一个问题的响应)和重写依赖它的测试。是否有一个不太激烈的选择?
答案 0 :(得分:1)
它的一部分可能是您的测试设置中的错误(在规范中)&然后如何构建模型以通过测试。模型应该有一个validates
组件,它响应测试。
让我们看看你错误的这一部分:
失败/错误:它{should validate_presence_of:attribute1}
当primary_first_name设置为nil时,包含“不能为空”的预期错误,...
告诉我您在attribute1
存在的规范中创建了一个shoulda验证,然后您需要在模型中验证attribute1
presence
然后你有收到的错误:
出错:[“不能为空(属性:\”attribute2 \“,值:nil)”,“不能为空(属性:\”attribute3 \“,值:nil)”] < / p>
多个错误,对于在哈希中传入的属性,只需要1个属性。
不知道你的规格是什么?模型看起来像,我只能假设,但这是我写的方式:
规格:
it { is_expected_to validate_presence_of(:attribute1) }
然后,您的模型将具有对应的验证,以匹配它:
validates :attribute1, presence: true