单元测试使用IHttpActionResult和ado.net的Web Api控制器

时间:2015-04-30 16:52:00

标签: asp.net unit-testing asp.net-web-api

我正在尝试在我的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: 

0 个答案:

没有答案