unit-testing - 如何将 TDD 用于预期对某些输入不执行任何操作的方法?
问题描述
我确信这是一个愚蠢的问题,但我根本不知道 - 假设我有一个方法,预计对某些输入什么都不做。比如,值 < 10,打印字符,否则什么也不做。基本上,单元测试将通过实际方法或只有一个空主体的方法。如何为这样的实例编写失败的测试?
解决方案
您的单元测试断言应该基于单元可观察的效果——返回值或(不幸的是)副作用。有时您确实想在模拟的帮助下测试行为而不是结果,但这会使测试变得脆弱。
如果你有一个返回的值,一切都很简单,你只需检查该值是否满足一些已知的后置条件。
如果出现副作用,您必须设置正确的测试环境(例如一些全局状态),然后检查它是如何更改的。对于您的具体示例,您可以重定向输出并稍后验证是否在小于 10 的值上写入了某些内容,并且没有写入其他内容。
所以通常你仍然想检查那个方法什么也没做,因为它是一个单独的执行流程。
推荐阅读
- javascript - React 中的绑定与箭头函数性能
- math - 如何在 4D 平面上找到一个点周围均匀分布的点?
- ios - WkWebView Cordova Ios onClick 事件未触发
- javascript - Antd提示框悬停后如何消失?
- java - 给定查询参数的具有空值和非空值的 JPA 查询
- c++ - 如何在 C++ 中逐字符读取字符直到换行
- xml - 通过 IMPORTXML 从源代码中提取信息
- postgresql - 如何从 postgres 备份恢复数据库
- clickhouse - Clickhouse 生成两个日期和间隔之间的日期数组
- javascript - 如何将 htmldivelement 对象转换为 JSX/React 元素?