You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单元测试中如何测试被测方法内部调用的方法/查询的返回值?

代码空校验优化

首先修正原代码大小写错误的同时补充空校验逻辑:

public bool Method1()
{
    var list = Engine.GetList(id);
    // 校验业务层返回列表为空的场景
    if (list == null)
    {
        // 可根据实际业务需求调整异常抛出、默认值赋值逻辑
        m_content1 = string.Empty;
        m_content2 = string.Empty;
        return false;
    }

    var list1 = list.Where(x => x.id == id);
    var list2 = list.Where(x => x.score > 400);
    
    // 此处实例化的StringBuilder默认非空,无需额外校验;如果有外部传入StringBuilder的场景可补充校验
    StringBuilder sb = new StringBuilder();
    m_content1 = GetContent(list1, sb);

    StringBuilder sb2 = new StringBuilder();
    m_content2 = GetContent(list2, sb2);

    // 补充原有方法缺失的返回值逻辑
    return true;
}

如果需要兜底GetContent方法的入参异常风险,可在GetContent中补充如下校验:

// 此处YourItemType替换为列表实际存储的实体类型
private string GetContent(IEnumerable<YourItemType> inputList, StringBuilder sb)
{
    // 校验空列表场景
    if (inputList == null)
    {
        return string.Empty;
    }
    // 校验StringBuilder为空场景
    if (sb == null)
    {
        sb = new StringBuilder();
    }
    
    // 原有GetContent的业务逻辑
}

单元测试验证方案

你可以基于常用的.NET单元测试框架(xUnit/NUnit)配合Mock工具(Moq/NSubstitute)完成以下场景的测试:

  • 测试Engine返回空列表场景:Mock Engine.GetList方法返回null,调用Method1后验证m_content1、m_content2为预期默认值,方法返回值符合业务设定。
  • 测试list1为空场景:Mock Engine.GetList返回的列表中无匹配id的元素,调用Method1后验证m_content1的输出符合空列表的处理逻辑。
  • 测试list2为空场景:Mock Engine.GetList返回的列表中所有元素score均≤400,调用Method1后验证m_content2的输出符合空列表的处理逻辑。
  • 测试GetContent传入空StringBuilder场景(如已补充GetContent的空校验):直接调用GetContent方法,传入null的StringBuilder参数,验证方法无空引用异常抛出,返回结果符合预期。

内容的提问来源于stack exchange,提问作者user1914725

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:06:03