我正在尝试在我的API控制器上执行一些单元测试,但是我遇到了问题,因为它使用的是IHttpActionResult,我的实际数据是从数据库(Azure)调用的。
以下是一个简单的Get by id方法的示例
// GET: api/RoundOnesApi/5
[ResponseType(typeof(RoundOne))]
public IHttpActionResult GetRoundOne(int id)
{
RoundOne roundOne = db.RoundOnes.Find(id);
if (roundOne == null)
{
return NotFound();
}
return Ok(roundOne);
}
然后我尝试进行单元测试来测试它。
public void TestMethod1()
{
//ApplicationDbContext db = new ApplicationDbContext();
//arrange
var controller = new RoundOnesApiController();
//act
var actionResult = controller.GetRoundOne(1); //1
//assert
var response = actionResult as OkNegotiatedContentResult<RoundOne>; //RoundOne is my model class
Assert.IsNotNull(response);
Assert.AreEqual(1, response.Content.Id);
GetRoundOne(1)包含足球队信息的数据库条目。由于这不是空的,我认为它会通过。
顺便说一句,我只是想做一般的单元测试,看看GetRoundOne(1)是否可以针对实际存在进行测试。一旦它通过了我所需要的一切。
例外:
Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException was unhandled by user code
HResult=-2146233088
Message=Assert.IsNotNull failed.
Source=Microsoft.VisualStudio.QualityTools.UnitTestFramework
StackTrace:
at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.HandleFailure(String assertionName, String message)
at Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsNotNull(Object value)
at MyUnitTestProject.UnitTest1.TestMethod1() in c:\Users\Daniel\Documents\Visual Studio 2013\Projects\UefaServiceV9\MyUnitTestProject\UnitTest1.cs:line 46
InnerException: