首页 > 解决方案 > 如何测试仅存在于该函数内部的变量的值?

问题描述

我正在尝试为函数实现一些单元测试,但其中一个输入不会改变函数返回的内容。即使这个输入不会改变函数返回的内容,我仍然需要它作为代码中的 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
     }

问题是我不知道如何在测试中获取变量“链接”,以检查它的值是否正确,因为我的函数没有返回它。那么,如何测试取决于给定输入的某个函数变量的值,但我的函数没有返回接近该变量值的任何值?

标签: c#unit-testing

解决方案


执行单元测试时,请考虑像黑盒这样的功能。测试输入组合,测试幂等性等。实际功能的实现可以从单元测试中抽象出来。没有看到

//Some other code

我想看看您是否可以将 API 调用转换为辅助函数。然后,为辅助函数编写单独的单元测试。


推荐阅读