gpt4 book ai didi

c# - xUnit.net IsType 在返回类型的 MS 测试中等效

转载 作者:太空狗 更新时间:2023-10-30 01:29:44 25 4
gpt4 key购买 nike

我正在关注 this guide我正在尝试使用 MS Test 编写类似的测试。 MS 测试是否有 IsType() 转换成功时返回对象

来自 this comparison , 我看到我可以使用 IsInstanceOfType()但返回类型是 void .


我正在尝试在 MS 测试中实现这一行: var badRequestResult = Assert.IsType<BadRequestObjectResult>(result);

[Fact]
public async Task IndexPost_ReturnsBadRequestResult_WhenModelStateIsInvalid()
{
// Arrange
var mockRepo = new Mock<IBrainstormSessionRepository>();
mockRepo.Setup(repo => repo.ListAsync()).Returns(Task.FromResult(GetTestSessions()));
var controller = new HomeController(mockRepo.Object);
controller.ModelState.AddModelError("SessionName", "Required");
var newSession = new HomeController.NewSessionModel();

// Act
var result = await controller.Index(newSession);

// Assert
var badRequestResult = Assert.IsType<BadRequestObjectResult>(result);
Assert.IsType<SerializableError>(badRequestResult.Value);
}

是的,我可以使用 as 进行转换然后使用 IsInstanceOfType ... 只是想知道是否有单线。

var badRequestResult = result as BadRequestObjectResult;
Assert.IsInstanceOfType(badRequestResult, typeof(BadRequestObjectResult));

引用:Add to MSTest Request

最佳答案

我在 MSTest 中没有遇到过等效版本。

同样,如果进行转换,则无需检查实例是否属于类型。只需检查它是否不为空。

// Act
var result = await controller.Index(newSession);

// Assert
var badRequestResult = result as BadRequestObjectResult;
Assert.IsNotNull(badRequestResult, "Expected BadRequestObjectResult");
Assert.IsInstanceOfType(badRequestResult.Value, typeof(SerializableError));

否则,您可以创建自己的断言

public static class AssertExtension {
public static TExpected AssertIsType<TExpected>(this object actual, string message = null)
where TExpected : class {
TExpected result = actual as TExpected;
Assert.IsNotNull(result, message);
return result;
}
}

提供所需的行为

// Assert
var badRequestResult = result.AssertIsType<BadRequestObjectResult>();
badRequestResult.Value.AssertIsType<SerializableError>();

关于c# - xUnit.net IsType 在返回类型的 MS 测试中等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50025527/

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