我有一个像ExecuteAsync
方法覆盖的ApiController(我正在使用RavenDB,我在这里创建它的会话):
public override async Task<HttpResponseMessage> ExecuteAsync(
HttpControllerContext controllerContext,
CancellationToken cancellationToken)
{
using (Session = Store.OpenAsyncSession())
{
var result = await base.ExecuteAsync(controllerContext, cancellationToken);
await Session.SaveChangesAsync();
return result;
}
}
我想使用xUnit或Microsoft Test Framework为它编写自动化测试,目前我仍然坚持通过ExecuteAsync调用控制器操作。
我应该以任何特定的方式构造ControllerContext以完成这项工作,还是我错过了什么?
简单地创建控制器对象和调用操作会引发Session对象的NullReferenceException,这显然不是因为尚未调用ExecuteAsync而创建的。