【发布时间】:2016-09-06 15:15:44
【问题描述】:
我对测试项目有点陌生。我目前有一个包含 Get、Put、Post 和 Delete 方法的 web api 项目。当谈到编写测试用例时,我很困惑。我应该编写测试代码来测试 Http URL 吗?
我的 web api 代码:
// GET api/values/5
[HttpGet("{id}")]
public IActionResult Get(string id)
{
using (var unitOfWork = new UnitOfWork(_db))
{
var r = unitOfWork.Resources.Get(id);
unitOfWork.Complete();
Models.resource result = ConvertResourceFromCoreToApi(r);
if (result == null)
{
return NotFound();
}
else
{
return Ok(result);
}
}
}
在我的测试项目中,我有点卡在这里。我们正在使用 Xunit。如何编写测试代码来测试 Get 方法?或者我应该编写代码来测试 URL api/values/5,但是如何?
[Fact]
public void GetTest()
{
using (var unitOfWork = new UnitOfWork(new MockDatabase()))
{
}
}
任何帮助将不胜感激。
【问题讨论】:
-
视情况而定。你在写单元测试还是集成测试?
-
我相信单元测试。
-
你应该知道的。您可以在此处阅读有关单元与集成的更多信息:dannyvanderkraan.wordpress.com/2015/12/24/…,对于这种情况,您只需调用方法来对 api 进行单元测试。
-
是的,我们正在编写单元测试。抱歉,这可能是一个愚蠢的问题,但是如何从单元测试中调用控制器中的方法?在“using (var unitOfWork = new UnitOfWork(new MockDatabase()))”里面,我应该有类似 var r = xxxController.Get("some id") 的东西来调用方法吗?
-
MichaelDotKnox 为您很好地回答了这个问题。去吧。
标签: visual-studio asp.net-web-api automated-tests xunit testcase