【发布时间】:2016-06-09 12:04:48
【问题描述】:
我很好奇有人会如何对以下伪编码函数进行单元测试,甚至重构以更容易测试不同的部分。
首先,我们有一个庞大的代码库,在高层次上分为以下项目:
Orchestrations -> Services -> Repositories -> Database
-> Behaviors
我正在使用的当前示例是在编排级别,有一个功能如下:
FUNCTION Process (Options)
IF Options.Option1 THEN
IF Service1.HasAnyItems THEN
Service1.DoSomethingWithThoseItems
FI
FI
IF Options.Option2 THEN
IF Service2.HasAnyItems THEN
Service2.DoSomethingWithThoseItems
FI
FI
IF Options.Option1 OR Options.Option2 THEN
Orchestration2.DoSomething
FI
END FUNCTION
我立即看到 4 个不同的测试场景会产生不同的输出:
- 选项 1 为真,选项 2 为假
- 选项2为真,选项1为假
- 选项1为真,选项2为真
- 选项 1 为假,选项 2 为假
目前该函数不返回任何内容,因为调用了各种事物(单独测试)的服务和编排。为了增加更多挑战,编排调用的结果可能会根据它将在内部获取的设置产生不同的副作用。
以前,我通过模拟服务和编排并断言该函数被“调用”来完成对这样一个函数的测试。但是,我不是这个的忠实粉丝,因为模拟很乏味并且测试非常脆弱,因为内部函数更改很容易破坏测试。
【问题讨论】:
-
“我在问单元测试是如何工作的,但我基本上不想进行单元测试,因为它很乏味,需要根据实际代码进行更改”
标签: unit-testing