我有这样的服务:单元测试的HTTPRequest头与ServiceStack
public class PlayerService : Service
{
public IPlayerAppService PlayerAppService { get; set; }
public PlayerService (IPlayerAppService service)
{
if (service == null)
throw new ArgumentException ("Service null");
PlayerAppService = service;
}
public object Post (PlayerDTO request)
{
var newPlayer = new PlayerResponse()
{
Player = PlayerAppService.SendPlayerLocation(request.Position.Latitude, request.Position.Longitude)
};
return new HttpResult (newPlayer)
{
StatusCode = System.Net.HttpStatusCode.Created,
Headers =
{
{ HttpHeaders.Location, base.Request.AbsoluteUri.CombineWith(newPlayer.Player.Id.ToString()) }
}
};
}
}
我手动验证了定位和响应看起来与我对这个服务的部署是正确的。我想弄清楚如何进行单元测试。我写了这样一个测试:
[TestFixture]
public class PlayerServiceTests
{
AppHost appHost;
[TestFixtureSetUp]
public void TestFixtureSetUp()
{
appHost = new AppHost();
appHost.Init();
appHost.Start ("http://localhost:1337/");
}
[TestFixtureTearDown]
public void TestFixtureTearDown()
{
appHost.Dispose();
appHost = null;
}
[Test]
public void NewPlayer_Should_Return201AndLocation()
{
// Arrange
PlayerService service = new PlayerService (appHost.TryResolve<IPlayerAppService>());
// Act
HttpResult response = (HttpResult)service.Post (It.IsAny<PlayerDTO>());
// Assert
Assert.NotNull (response);
Assert.AreEqual(HttpStatusCode.Created, response.StatusCode);
Assert.AreEqual(response.Response.ToDto<PlayerResponse>().Player.Id.ToString(), response.Headers.Where(x=> x.Key == HttpHeaders.Location).SingleOrDefault().Value);
}
}
当我的单元测试运行虽然base.Request。你有什么建议可以从我的单元测试中填充这个吗?
语言? C# ? – Dukeling 2013-02-09 19:49:07
是:)在MonoDevelop中开发。 – 2013-02-09 19:54:16
添加了相应的标签。 – Dukeling 2013-02-09 19:56:11