ASP.NET核心测试xUnit控制器

时间:2017-07-08 22:11:12

标签: c# unit-testing asp.net-core xunit

此测试始终返回null,并且测试始终失败...但是当我运行projet时,一切正常并正常返回数据,此项目使用RavenDB

控制器

asyncComputed

并使用xUnit进行测试

[Route("api/[controller]")]
public class CategoryController : Controller
{
    private readonly AppDbContext _context = new AppDbContext();

    // GET: api/category
    [HttpGet("{id}")]
    public async Task<JsonResult> Get(string id)
    {
        using (IAsyncDocumentSession session = _context.SessionAsync){
            var result = await session.LoadAsync<Category>(id);
            return Json(result);
        }
    }
} 

1 个答案:

答案 0 :(得分:2)

根据您的问题, 受测试系统(SUT) CategoryController。因此,模仿CategoryController没有意义;相反,你想模仿AppDbContext

如果要对控制器进行单元测试,则应使用ASP.NET Core的Dependency Inject,并通过构造函数注入注入其依赖项。换句话说,您不应使用 new

通常,我们注入接口而不是具体类,以便我们可以轻松地模拟它。

你的代码丢失了很多部分,所以我只能直接给你一个。您需要更多详细信息,您可以在GitHub使用NSubstitute和XUnit查看此示例项目。