我有以下ActiveRecord模型类方法:
def self.find_by_shortlink(shortlink)
find_by!(shortlink: shortlink)
end
当我针对这种方法运行Mutant时,我被告知在测试运行后有17个突变,16个仍然“活着”。
这是“活”突变之一:
-----------------------
evil:Message.find_by_shortlink:/home/peter/projects/kaboom/app/models/message.rb:29:3f9f2
@@ -1,4 +1,4 @@
def self.find_by_shortlink(shortlink)
- find_by!(shortlink: shortlink)
+ find_by!(shortlink: self)
end
如果我手动进行同样的更改,我的测试会失败 - 正如预期的那样。
所以我的问题是:如何编写“杀死”这种突变的单元测试?
答案 0 :(得分:3)
免责声明,突变作者发言。
针对这种情况的迷你备忘单:
现在对您的情况:如果您将变异应用于您的代码。参数被忽略并且基本上是硬编码的(查找器中使用的键:shortlink
的值不会根据参数shortlink
而改变)。因此,您在测试中唯一需要做的就是添加一个案例,其中参数shortlink
对您在测试中的期望很重要。
如果传递self
作为:shortlink
finder的值与传入您测试的当前参数具有相同的效果,请尝试使用其他参数。在AR中强制查找值可能很棘手,您的模型有可能强制转换为您作为参数测试的相同值。