gpt4 book ai didi

c# - Ok Result 的单元测试测试

转载 作者:太空宇宙 更新时间:2023-11-03 23:04:47 25 4
gpt4 key购买 nike

我有以下(简化的) Controller :

public async Task<IHttpActionResult> Profile(UpdateProfileModelAllowNulls modelNullable)
{
ServiceResult<ProfileModelDto> result = await _profileService.UpdateProfile(1);

return Ok(result);
}

和:

public async Task<ServiceResult<ProfileModelDto>> UpdateProfile(ApplicationUserDto user, UpdateProfileModel profile)
{
//Do something...
}

和下面的 NUnit 测试:

[Test]
public async Task Post_Profile()
{
var result = _controller.Profile(new UpdateProfileModelAllowNulls() { Email = "testEmail@tt.co.uk", DisplayName = "TestDisplay"}) as OkNegotiatedContentResult<Task<<ProfileModelDto>>;
Assert.IsNotNull(result);
}

在我的 NUnit 测试中,我尝试使用本教程检查结果是否正常 https://www.asp.net/web-api/overview/testing-and-debugging/unit-testing-with-aspnet-web-api .

我的问题是我无法转换为 OkNegotiatedContentResult ,我假设是因为我没有传递正确的对象,但我看不到应该传递的对象。据我所知,我传递的是正确的对象,例如:OkNegotiatedContentResult<Task<<ProfileModelDto>>;

但这行不通。

我也试过:

var result = _controller.Profile(new UpdateProfileModelAllowNulls() { Email = "testEmail@tt.co.uk", DisplayName = "TestDisplay"}) as OkNegotiatedContentResult<Task<IHttpActionResult>>;

但这也行不通。

有人能帮忙吗?

最佳答案

你的 Controller 是异步的,所以你应该这样调用它:

var result = (_controller.Profile(new UpdateProfileModelAllowNulls() { Email = "testEmail@tt.co.uk", DisplayName = "TestDisplay"}).GetAwaiter().GetResult()) as OkNegotiatedContentResult<ProfileModelDto>;

关于c# - Ok Result 的单元测试测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41718653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com