我有以下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如果我手动进行同样的更改,我的测试就会失败--正如预期的那样。
所以我的问题是:我如何编写一个单元测试来“杀死”这种变异?
发布于 2015-06-02 11:18:13
免责声明,我是变种作者。
适用于此类情况的迷你小抄:
报告错误
1. Found a behavior change: Encode it as a test, or change a test to cover that behavior.
mutation.
参数被忽略,本质上是硬编码的(在查找器中使用的键:shortlink的值不会根据参数shortlink的不同而改变)。因此,您在测试中唯一需要做的就是添加一个案例,其中参数shortlink对您在测试中的期望很重要。
如果将self作为:shortlink查找器的值传递与传递当前测试的参数具有相同的效果,请尝试使用不同的参数。在AR中强制查找器中的值可能是棘手的,有可能你的模型强制到你正在测试的相同的值作为参数。
https://stackoverflow.com/questions/30512307
复制相似问题