为什么可以';t Microsoft.VisualStudio.TestTools.UnitTesting获取Db

本文关键字:TestTools VisualStudio UnitTesting 获取 Db Microsoft 为什么 | 更新日期: 2023-09-27 18:08:13

  1. 项目:Web-Api
  2. 运行路径:打开TestExplorer,右键单击要测试的项目,左键单击调试选定的测试
  3. 问题描述:我用sql server探查器跟踪了sql server,sql server收到了请求并返回了Items。但是TDD项目一无所获。以下是相关代码:

// the test project test
[TestMethod]
public void GetCategoryTrees()
{
    //Arrange
    CategoryTreesController controller = new CategoryTreesController();
    //Act
    List<CategoryTree> result = controller.GetCategoryTrees();
    //Assert
    Assert.AreNotEqual(0, result.Count);
}

// the real project code
private ApplicationDbContext db = new ApplicationDbContext();
// GET: api/CategoryTrees
public List<CategoryTree> GetCategoryTrees()
{
    db.CategoryTrees.Load();
    return db.CategoryTrees.ToList();
}

当我在IE资源管理器中访问api/CategoryTrees时,我可以在即时窗口中获取项目。共有14项。但当我在前面提到的运行路径中运行测试项目时,我一无所获。请帮帮我,谢谢。

//below code was coded in immediate window under test mode
db.CategoryTrees.ToList()
Count = 0
db.CategoryTrees.Load()
Expression has been evaluated and has no value

//以下代码是访问IE模式下的即时窗口编码

 db.CategoryTrees.ToList()
Count = 14
    [0]: {Models.CategoryTree}
    [1]: {Models.CategoryTree}
    [2]: {Models.CategoryTree}
    [3]: {Models.CategoryTree}
    [4]: {Models.CategoryTree}
    [5]: {Models.CategoryTree}
    [6]: {Models.CategoryTree}
    [7]: {Models.CategoryTree}
    [8]: {Models.CategoryTree}
    [9]: {Models.CategoryTree}
    [10]: {Models.CategoryTree}
    [11]: {Models.CategoryTree}
    [12]: {Models.CategoryTree}
    [13]: {Models.CategoryTree}

为什么可以';t Microsoft.VisualStudio.TestTools.UnitTesting获取Db

  • 根据我的判断,我认为我走错了路。无论测试代码是否成功运行作为可测试性代码设计的核心,我提高了测试代码的复杂性,因此,我将隔离代码,并使其可测试。

  • 感谢@Nkosi对此的评论