首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >药物的单元测试副作用

药物的单元测试副作用
EN

Stack Overflow用户
提问于 2018-04-15 03:20:09
回答 1查看 151关注 0票数 0

我正在为一个调用模块的函数编写一个单元测试,作为调用它的副作用的一部分:

代码语言:javascript
复制
defmodule HeimdallrWeb.VerifyController do
  use HeimdallrWeb, :controller

  def verify(conn, _params) do
    [forwarded_host | _tail] = get_req_header(conn, "x-forwarded-host")

    case is_preview_page?(forwarded_host) do
      {:ok, false} ->
        conn |> send_resp(200, "")

      {:ok, %Heimdallr.Commits.Commit{} = commit} ->
        Heimdallr.Commits.touch_commit(commit)
        conn |> send_resp(200, "")

      {:not_found, _reason} ->
        conn |> send_resp(200, "")
    end
  end
end

副作用是从行Heimdallr.Commits.touch_commit(commit)触发的。

有关这方面的几个问题:

  1. 我的单元测试应该与测试touch_commit方法的效果有关吗?
  2. 如果是这样的话,我是否应该考虑传递一个通用的“触摸”函数来验证方法,以便更容易地进行测试。这可能是困难的,因为凤凰/埃利克斯路由系统的性质,我还没有调查。

如果我使用的是Rails / Ruby / Rspec,那么我就会期望在HeimdallrCommits模块上调用一个类级方法。

我编写测试的考虑和原因是,在将来,我可能会通过删除或注释行等方式,意外地删除与提交有关的功能。

EN

回答 1

Stack Overflow用户

发布于 2018-04-15 18:41:51

我会说1:不。这就是在测试中保持低复杂度。您只想在方法中进行测试(无论您想测试什么),其余的都应该被忽略。您可以做的是验证您的方法调用了什么touch_commit --应该是一个很好的模拟框架的一部分。这些是我的5美分,抱歉地说,我不熟悉凤凰/灵丹妙药,所以我不能给你任何工作的例子。就像验证方法一样,我想的就是Mockito或Moq。

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

https://stackoverflow.com/questions/49838182

复制
相关文章

相似问题

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