我正在对带有日期的请求进行单元测试。这些日期带有相同的时间戳,并且测试失败。在不同的时间戳下,测试运行良好,但是在相同的时间戳下,测试返回错误结果。
测试代码:
[Fact]
public void ShouldHaveValidationSuccessWhenStartDateIsLessOrEqualToFinishDate()
{
//Arrange
var request = new RegisterRequest { FinishDate = DateTimeOffset.UtcNow,StartDate = DateTimeOffset.UtcNow };
var sut = new RegisterRequestValidator();
//act
var result = sut.TestValidate(request);
//Assert
result.ShouldNotHaveValidationErrorFor(x => x.StartDate);
}
验证者代码:
public RegisterRequestValidator()
{
RuleFor(req => req.StartDate).LessThanOrEqualTo(req => req.FinishDate).When(HasStartDate);
}
protected bool HasStartDate(RegisterRequest req) => req.StartDate != null;
RegisterRequest代码:
public sealed class RegisterRequest : IRequest<OperationResult<IQueryable<EntityViewModel>>>
{
public DateTimeOffset? StartDate { get; set; }
public DateTimeOffset? FinishDate { get; set; }
}
我得到的错误是
Message:
FluentValidation.TestHelper.ValidationTestException : Expected no validation errors for property StartDate
----
Validation Errors:
[0]: 'Start Date' must be less than or equal to '07/11/2019 12:50:58 +00:00'.
为什么会这样?