我正在尝试对我的一些网络服务进行单元测试。为此,我想断言我的一些HttpResponseMessage
。为此,我正在做:
[TestMethod()]
public void LoginTest()
{
HttpResponseMessage response = Request.CreateResponse(_accountController.Login("testuser", "testpw")); //CODE STOPS RUNNING AT THIS LINE
Assert.IsTrue(response.IsSuccessStatusCode, "User unable to log in with correct login info");
}
Login
的方法如下:
public IHttpActionResult Login(String userName, String userPassword)
{
try
{
if (userName == null)
return NotFound();
//Logging in user etc.
return Ok();
}
catch
{
return NotFound();
}
}
但是,即使Login()
在调试时返回Ok()
,测试也总是返回失败状态。没有明显的错误或例外,但是,当我调试测试时,输出显示的内容(我排除了显示Loaded
或Unloaded
的内容的行:)
The thread 0x1190 has exited with code 0 (0x0).
Exception thrown: 'System.InvalidOperationException' in System.ServiceModel.dll
Exception thrown: 'System.ArgumentNullException' in System.Web.Http.dll
Exception thrown: 'System.Reflection.TargetInvocationException' in mscorlib.dll
Exception thrown: 'Microsoft.VisualStudio.TestPlatform.MSTestFramework.TestFailedException' in Microsoft.VisualStudio.TestPlatform.Extensions.VSTestIntegration.dll
Exception thrown: 'Microsoft.VisualStudio.TestPlatform.MSTestFramework.TestFailedException' in Microsoft.VisualStudio.TestPlatform.Extensions.VSTestIntegration.dll
The thread 0xaec has exited with code 0 (0x0).
Exception thrown: 'System.InvalidOperationException' in Microsoft.VisualStudio.TestPlatform.TestExecutor.Core.dll
Exception thrown: 'System.ServiceModel.CommunicationObjectAbortedException' in System.ServiceModel.dll
Exception thrown: 'System.ServiceModel.CommunicationObjectAbortedException' in System.ServiceModel.dll
Exception thrown: 'System.ServiceModel.CommunicationObjectAbortedException' in System.ServiceModel.Internals.dll
Exception thrown: 'System.IO.IOException' in System.dll
Exception thrown: 'System.ServiceModel.CommunicationObjectAbortedException' in System.ServiceModel.dll
Exception thrown: 'System.InvalidOperationException' in Microsoft.VisualStudio.TestPlatform.TestExecutor.Core.dll
Exception thrown: 'System.ServiceModel.CommunicationObjectAbortedException' in System.ServiceModel.dll
The program '[9936] vstest.executionengine.x86.exe' has exited with code 0 (0x0).
The program '[4084] TanulmanyiRendszer.Admin.vshost.exe' has exited with code -1 (0xffffffff).
我的猜测是,这不是您应该将IHttpActionResult
转换为HttpResponseMessage
的方式。我该如何解决这个问题?
答案 0 :(得分:1)
如果使用IHttpActionResult
作为操作的返回类型,则检查返回的实际类型是否是正确的派生类型。无需检查HttpResponseMessage
,因为这是框架的关注
[TestMethod()]
public void LoginTest() {
var response = _accountController.Login("testuser", "testpw") as OkResult;
Assert.IsNotNull(response, "User unable to log in with correct login info");
}