此测试始终返回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);
}
}
}
答案 0 :(得分:2)
根据您的问题, 受测试系统(SUT) 为CategoryController
。因此,模仿CategoryController
没有意义;相反,你想模仿AppDbContext
。
如果要对控制器进行单元测试,则应使用ASP.NET Core的Dependency Inject,并通过构造函数注入注入其依赖项。换句话说,您不应使用 new 。
通常,我们注入接口而不是具体类,以便我们可以轻松地模拟它。
你的代码丢失了很多部分,所以我只能直接给你一个。您需要更多详细信息,您可以在GitHub使用NSubstitute和XUnit查看此示例项目。