c# - 如何测试仅存在于该函数内部的变量的值?
问题描述
我正在尝试为函数实现一些单元测试,但其中一个输入不会改变函数返回的内容。即使这个输入不会改变函数返回的内容,我仍然需要它作为代码中的 API。函数是这样的:
public bool IsEmailSent(string userEmail, bool isJson)
{
var link = isJson ? "Link1" : "Link2";
if (string.IsNullOrEmpty(userEmail))
{
return false;
}
//Some other code
return true;
}
我要做的是测试变量'link'值,这取决于输入'isJson'。所以我想实现的测试是这样的:
[TestMethod]
public void link_should_be_link2_when_isJson_is_false()
{
//if isJson is false && link = link2, test is sucessful
}
问题是我不知道如何在测试中获取变量“链接”,以检查它的值是否正确,因为我的函数没有返回它。那么,如何测试取决于给定输入的某个函数变量的值,但我的函数没有返回接近该变量值的任何值?
解决方案
执行单元测试时,请考虑像黑盒这样的功能。测试输入组合,测试幂等性等。实际功能的实现可以从单元测试中抽象出来。没有看到
//Some other code
我想看看您是否可以将 API 调用转换为辅助函数。然后,为辅助函数编写单独的单元测试。
推荐阅读
- python - 如何在一个文件中分别运行多个python方法
- go - 反映运行时错误:在零值上调用 reflect.flag.mustBeAssignable
- .net-core - Swagger 授权承载不发送
- python - 加减一个二进制数后得到不同的值
- google-sheets - 谷歌电子表格查询;保留背景颜色
- java - java方法重载似乎不清楚
- jquery - 如果我在 javascript 中设置列,则引导表调整列大小不起作用
- typescript - 从 Typescript 中的数组属性值推断属性名称
- java - 随机约束行为
- machine-learning - 如何在内存和批次方面使用大数据集进行多标签图像分类