首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解突变失败

了解突变失败
EN

Stack Overflow用户
提问于 2015-05-29 00:34:28
回答 1查看 139关注 0票数 4

我有以下ActiveRecord模型类方法:

代码语言:javascript
复制
def self.find_by_shortlink(shortlink)
  find_by!(shortlink: shortlink)
end

当我对这种方法运行Mutant时,我被告知有17个突变,其中16个在测试运行后仍然“活着”。

这是一个“活的”突变:

代码语言:javascript
复制
-----------------------
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

如果我手动进行同样的更改,我的测试就会失败--正如预期的那样。

所以我的问题是:我如何编写一个单元测试来“杀死”这种变异?

EN

回答 1

Stack Overflow用户

发布于 2015-06-02 11:18:13

免责声明,我是变种作者。

适用于此类情况的迷你小抄:

  1. 确保您的规范现在是绿色的。
  2. 更改代码,因为差异显示
  3. 尝试观察不需要的行为更改。
    1. 不可能?
      1. (可能)接受突变作为更好的code.
      2. (unlikely)向mutant

报告错误

代码语言:javascript
复制
1. Found a behavior change: Encode it as a test, or change a test to cover that behavior.

mutation.

  • Make
  1. 重新运行突变体以验证该突变体的死亡,实际上列出了您添加的用于该突变的测试。如果不是,则重新构造测试以覆盖所选测试中的突变主题。

参数被忽略,本质上是硬编码的(在查找器中使用的键:shortlink的值不会根据参数shortlink的不同而改变)。因此,您在测试中唯一需要做的就是添加一个案例,其中参数shortlink对您在测试中的期望很重要。

如果将self作为:shortlink查找器的值传递与传递当前测试的参数具有相同的效果,请尝试使用不同的参数。在AR中强制查找器中的值可能是棘手的,有可能你的模型强制到你正在测试的相同的值作为参数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30512307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档