.NET Core NUnit 上的单元测试失败
Unit Tests Failing on .NET Core NUnit
我正在尝试为登录控制器设置测试,但每当我 运行 测试时它都会失败。我收到以下错误。 should_Login() 中的 var 结果始终为 null。
留言:
预期:不为空
但是是:null
Stack Trace:
UserTests.should_Login() line 47
GenericAdapter`1.GetResult()
AsyncToSyncAdapter.Await(Func`1 invoke)
TestMethodCommand.RunTestMethod(TestExecutionContext context)
TestMethodCommand.Execute(TestExecutionContext context)
<>c__DisplayClass1_0.<Execute>b__0()
BeforeAndAfterTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)
//UserTests
public class UserTests
{
Mock<IUserService> UserServiceMock = new Mock<IUserService>();
private UserController UserController;
[SetUp]
public void Setup()
{
UserServiceMock.Setup(x => x.Authenticate(new UserRequest { Email = "antony@gmail.com", Password = "Password1" }))
.ReturnsAsync(new ApiResponse(HttpStatusCode.OK)
{
ResponseObject = new
{
User = new
{
Id = 1,
Name = "Test",
Email = "test@gmail.com",
Token = "TokenGen"
}
}
});
}
[Test]
public async Task should_Login()
{
UserController = new UserController(UserServiceMock.Object);
var result = await UserController.Authenticate(
new UserRequest { Email = "test@gmail.com", Password = "Password" });
Assert.IsNotNull(result);
Assert.AreEqual(200, result.HttpResponseCode);
}
}
用户控制器如下所示
public class 用户控制器:ControllerBase
{
私有 IUserService _userService;
public 用户控制器(IUserService 用户服务)
{
_userService = 用户服务;
}
[AllowAnonymous]
[HttpPost("authenticate")]
public Task<ApiResponse> Authenticate([FromBody] UserRequest userRequest)
{
try
{
return _userService.Authenticate(userRequest);
}
catch (Exception ex)
{
var response = new ApiResponse(HttpStatusCode.InternalServerError) { ResponseMessage = ex.Message };
return Task.Run(() => response);
}
}
}
您的模拟正在寻找特定输入 (antony@gmail.com
),但您的单元测试正在传递不同的输入。
我正在尝试为登录控制器设置测试,但每当我 运行 测试时它都会失败。我收到以下错误。 should_Login() 中的 var 结果始终为 null。
留言: 预期:不为空 但是是:null
Stack Trace:
UserTests.should_Login() line 47
GenericAdapter`1.GetResult()
AsyncToSyncAdapter.Await(Func`1 invoke)
TestMethodCommand.RunTestMethod(TestExecutionContext context)
TestMethodCommand.Execute(TestExecutionContext context)
<>c__DisplayClass1_0.<Execute>b__0()
BeforeAndAfterTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)
//UserTests
public class UserTests
{
Mock<IUserService> UserServiceMock = new Mock<IUserService>();
private UserController UserController;
[SetUp]
public void Setup()
{
UserServiceMock.Setup(x => x.Authenticate(new UserRequest { Email = "antony@gmail.com", Password = "Password1" }))
.ReturnsAsync(new ApiResponse(HttpStatusCode.OK)
{
ResponseObject = new
{
User = new
{
Id = 1,
Name = "Test",
Email = "test@gmail.com",
Token = "TokenGen"
}
}
});
}
[Test]
public async Task should_Login()
{
UserController = new UserController(UserServiceMock.Object);
var result = await UserController.Authenticate(
new UserRequest { Email = "test@gmail.com", Password = "Password" });
Assert.IsNotNull(result);
Assert.AreEqual(200, result.HttpResponseCode);
}
}
用户控制器如下所示
public class 用户控制器:ControllerBase { 私有 IUserService _userService; public 用户控制器(IUserService 用户服务) { _userService = 用户服务; }
[AllowAnonymous]
[HttpPost("authenticate")]
public Task<ApiResponse> Authenticate([FromBody] UserRequest userRequest)
{
try
{
return _userService.Authenticate(userRequest);
}
catch (Exception ex)
{
var response = new ApiResponse(HttpStatusCode.InternalServerError) { ResponseMessage = ex.Message };
return Task.Run(() => response);
}
}
}
您的模拟正在寻找特定输入 (antony@gmail.com
),但您的单元测试正在传递不同的输入。