彼は、NUnit と Moq でテストされた MVC 4 の既定の WebAPI プロジェクトを使用した Web API コントローラーの単体テストの例です。
//ValuesController.cs in GetPostExample project
using System.Collections.Generic;
using System.Web.Http;
namespace GetPostExample.Controllers
{
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public void Post(string value)
{
}
// PUT api/values/5
public void Put(int id, string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
}
//AGetPostValuesControllerShould.cs in GetPostExampleTest project
using System.Web.Http.Controllers;
using GetPostExample.Controllers;
using Moq;
using NUnit.Framework;
namespace GetPostExampleTest
{
[TestFixture]
public class AGetPostValuesControllerShould
{
private Mock<HttpControllerContext> _controllerContext;
[SetUp]
public void Init()
{
_controllerContext = new Mock<HttpControllerContext>();
_controllerContext.SetupAllProperties();
}
[Test]
public void WhenAGetRequestIsCalledToValuesontrollerItShouldReturnAnArrayOfValues()
{
var expected = new[] {"value1", "value2"};
var valuesController = new ValuesController {ControllerContext = _controllerContext.Object};
var result = valuesController.Get();
Assert.That(result, Is.EqualTo(expected));
}
}
}