Mediatr:单元测试 behaviors/validation
Mediatr: Unit Testing behaviors/validation
我有一个 command/handler 将实体保存到数据库,但在我的代码中,它首先使用 fluentvalidation 通过验证(验证管道)。
我能够创建成功测试来测试处理程序,但现在我想确保命令首先通过验证。
我该怎么做?我应该像处理程序一样独立调用验证吗?如果可以,我该怎么做
这是我的代码
[Test]
public async Task CreateCoinCommand_Success()
{
var context = new Mock<EventsContext>();
var ownersMock = CreateDbSetMock(new List<Owner>());
context.Setup(x => x.Owners).Returns(ownersMock.Object);
var handler = new CreateCoinCommandHandler(context.Object, mapper.Object );
var cmd = new CreateCoinCommand(1, "sym", "name", null, null, null, 1, "description",
null, "https://google.com", null, null, null, new []{1,2});
var cltToken = new System.Threading.CancellationToken();
var result = await handler.Handle(cmd, cltToken);
Assert.IsInstanceOf<Unit>(result);
}
我的验证器叫做 CreateCoinCommandValidator
是的,在单元测试中你需要手动调用验证器
// Arrange
var validator = new CreateCoinCommandValidator();
var cmd = new CreateCoinCommand(1, "sym", "name", null, null, null, 1, "description",
null, "https://google.com", null, null, null, new []{1,2});
// Act
var validationResult = await validator.ValidateAsync(cmd);
// Assert
Assert.True(validationResult.IsValid);
...
我有一个 command/handler 将实体保存到数据库,但在我的代码中,它首先使用 fluentvalidation 通过验证(验证管道)。
我能够创建成功测试来测试处理程序,但现在我想确保命令首先通过验证。
我该怎么做?我应该像处理程序一样独立调用验证吗?如果可以,我该怎么做
这是我的代码
[Test]
public async Task CreateCoinCommand_Success()
{
var context = new Mock<EventsContext>();
var ownersMock = CreateDbSetMock(new List<Owner>());
context.Setup(x => x.Owners).Returns(ownersMock.Object);
var handler = new CreateCoinCommandHandler(context.Object, mapper.Object );
var cmd = new CreateCoinCommand(1, "sym", "name", null, null, null, 1, "description",
null, "https://google.com", null, null, null, new []{1,2});
var cltToken = new System.Threading.CancellationToken();
var result = await handler.Handle(cmd, cltToken);
Assert.IsInstanceOf<Unit>(result);
}
我的验证器叫做 CreateCoinCommandValidator
是的,在单元测试中你需要手动调用验证器
// Arrange
var validator = new CreateCoinCommandValidator();
var cmd = new CreateCoinCommand(1, "sym", "name", null, null, null, 1, "description",
null, "https://google.com", null, null, null, new []{1,2});
// Act
var validationResult = await validator.ValidateAsync(cmd);
// Assert
Assert.True(validationResult.IsValid);
...