如何测试返回某些内容并具有副作用的函数?

一个或0

我有一个函数,它返回一些东西,但同时有副作用。我应该只测试这个函数返回的值还是我也需要测试副作用的结果?

@slack_interactions.on('admin_add')
def handle_admin_add(payload):
    team_id = payload['team']['id']
    user_id = payload['user']['id']
    action_value = payload['actions'][0]['selected_options'][0]['value']

    user = SlackUser.objects.find_by_ids(team_id, action_value)

    if user and not user.is_bot:
        user.make_admin()

    return build_admins_message(team_id, user_id)
莱德Mx

简短的回答,测试两者。

长答案:您应该始终记住,测试正在验证对于给定的输入,您是否期望特定的输出

考虑到这一点,如果您的功能修改了状态(副作用),那么您需要验证状态是否按预期进行了修改。如果它还返回一个值,那么您需要验证返回的值是否符合预期。

只要您了解代码背后的禅意,测试就是确保代码健壮的好方法。我必须针对我的期望进行测试,并针对意外情况设计测试。

然而,单独的测试并不能产生好的代码,如果你有一个方法做两件事以上,那可能是设计不正确。通常影响状态的方法不应返回值,反之亦然。它不是一成不变的,但如果您遵循该约定,则更容易将您的系统解耦。

有一些编码原则可以防止未来的麻烦,其中之一就是单一职责原则。在这种情况下,您的功能显然违反了。我建议你看一看SOLID编程原则,相信我,这将是值得的。一旦你采用它们,单元测试就会自然而然地发生。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Enzyme:如何测试具有 DOM 副作用的组件?

来自分类Dev

具有副作用的单元测试方法

来自分类Dev

Pytest:设置具有无副作用的函数的模拟

来自分类Dev

没有副作用的函数返回值不应忽略

来自分类Dev

递归函数如何返回某些内容?

来自分类Dev

递归函数如何返回某些内容?

来自分类Dev

如何判断(或如何编写)没有副作用的python函数?

来自分类Dev

为什么在编写一个不返回任何内容且没有副作用的函数时,C 编译器不会给出警告?

来自分类Dev

具有副作用的内联汇编

来自分类Dev

具有副作用的内联汇编

来自分类Dev

具有最小副作用的递归

来自分类Dev

For循环具有意外的副作用

来自分类Dev

Spock存根具有无效返回类型的链接副作用

来自分类Dev

在文件范围内使用具有副作用的C ++函数,访问单例

来自分类Dev

Backbone,Jasmine-如何隔离运行测试,且没有副作用?

来自分类Dev

如何使用QTestLib测试不返回任何内容的函数

来自分类Dev

如何合并具有某些内容的文本并留空行

来自分类Dev

节点/打字稿:如何确保运行具有副作用的导入?

来自分类Dev

使函数返回具有不同属性的内容

来自分类Dev

将返回Option的副作用函数转换为迭代器

来自分类Dev

如何使用Scala和Mockito测试异步副作用

来自分类Dev

如何测试产生误差的方法的副作用

来自分类Dev

具有副作用的委托方法的反应方法

来自分类Dev

cond可以支持具有副作用的TF ops吗?

来自分类Dev

当valueFactory具有副作用时,为ConcurrentDictionary.GetOrAdd

来自分类Dev

通过vImage提取图像通道具有副作用

来自分类Dev

对收藏品有副作用还是返回新收藏?

来自分类Dev

GetDistance Javascript不返回任何内容,但具有作为参数的某些值

来自分类Dev

Python-如何对删除某些内容的函数进行单元测试?

Related 相关文章

  1. 1

    Enzyme:如何测试具有 DOM 副作用的组件?

  2. 2

    具有副作用的单元测试方法

  3. 3

    Pytest:设置具有无副作用的函数的模拟

  4. 4

    没有副作用的函数返回值不应忽略

  5. 5

    递归函数如何返回某些内容?

  6. 6

    递归函数如何返回某些内容?

  7. 7

    如何判断(或如何编写)没有副作用的python函数?

  8. 8

    为什么在编写一个不返回任何内容且没有副作用的函数时,C 编译器不会给出警告?

  9. 9

    具有副作用的内联汇编

  10. 10

    具有副作用的内联汇编

  11. 11

    具有最小副作用的递归

  12. 12

    For循环具有意外的副作用

  13. 13

    Spock存根具有无效返回类型的链接副作用

  14. 14

    在文件范围内使用具有副作用的C ++函数,访问单例

  15. 15

    Backbone,Jasmine-如何隔离运行测试,且没有副作用?

  16. 16

    如何使用QTestLib测试不返回任何内容的函数

  17. 17

    如何合并具有某些内容的文本并留空行

  18. 18

    节点/打字稿:如何确保运行具有副作用的导入?

  19. 19

    使函数返回具有不同属性的内容

  20. 20

    将返回Option的副作用函数转换为迭代器

  21. 21

    如何使用Scala和Mockito测试异步副作用

  22. 22

    如何测试产生误差的方法的副作用

  23. 23

    具有副作用的委托方法的反应方法

  24. 24

    cond可以支持具有副作用的TF ops吗?

  25. 25

    当valueFactory具有副作用时,为ConcurrentDictionary.GetOrAdd

  26. 26

    通过vImage提取图像通道具有副作用

  27. 27

    对收藏品有副作用还是返回新收藏?

  28. 28

    GetDistance Javascript不返回任何内容,但具有作为参数的某些值

  29. 29

    Python-如何对删除某些内容的函数进行单元测试?

热门标签

归档