xUnit.net IsType 在 MS 测试中等效于 Returns 类型
xUnit.net IsType Equivalent in MS Test That Returns Type
我正在关注 this guide and I'm trying to write a similar test with MS Test. Does MS Test have an IsType()
,return 对象 何时转换成功?
从 this comparison 开始,我发现我可以使用 IsInstanceOfType()
但 return 类型是 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));
我在 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>();
我正在关注 this guide and I'm trying to write a similar test with MS Test. Does MS Test have an IsType()
,return 对象 何时转换成功?
从 this comparison 开始,我发现我可以使用 IsInstanceOfType()
但 return 类型是 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));
我在 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>();