私は偉大なFluentValidationライブラリを使用しており、ユニットテストでバリデータを使用しています。 ShouldHaveValidationErrorFor拡張メソッドを使用してテストhttps://github.com/JeremySkinner/FluentValidation/wiki/g.-TestingFluentValidationテストでNullが処理されない
を、私はできるだけこのwikiページの例を以下している(しかし、私はxUnitのを使用しています)。
NullReferenceExceptionテストが失敗しました。しかし、それはまさに私がテストしようとしているものです。
ここにありますが、私のコードです:
バリ:
public class ChangeEmailRequestInputModelValidator : AbstractValidator<ChangeEmailRequestInputModel>
{
public ChangeEmailRequestInputModelValidator()
{
RuleFor(x => x.NewEmail)
.NotEmpty();
RuleFor(m => m.NewEmail.Trim())
.EmailAddress()
.When(m => m.NewEmail != null)
.WithMessage(ValidationConstants.SymbolIsNotAValidEmailAddress, x => x.NewEmail)
.WithName("NewEmail");
RuleFor(m => m.NewEmailConfirm.Trim())
.Cascade(CascadeMode.Continue)
.NotEmpty().WithMessage("Confirm New Email field cannot be empty.")
.Equal(m => m.NewEmail.Trim()).WithMessage("Confirm New Email field must be equal to the New Email.");
}
}
テスト:
public class ChangeEmailRequestInputModelValidatorTests
{
[Fact]
public void Errors_Where_NewEmail_Is_Null()
{
var val = new ChangeEmailRequestInputModelValidator();
val.ShouldHaveValidationErrorFor(v => v.NewEmail, null as string);
}
}
なぜこれが起こっているすべてのアイデア?私は何か間違っている必要がありますが、それは私がうんざりしている例と似ています。
ありがとうございました。それは完全に意味をなさない。私は問題が自分のコードであることを知っていた。ただそれを見ることができませんでした。 – onefootswill
これを再検討して申し訳ありませんが、値がnullのときにコードが爆発するのを防ぐために条件を使用しないでください。私は、トリムは、いつ実行されるのを防ぐのだろうと期待していませんでした。 – onefootswill
あなたは正しいです、あなたは私の答えを受け入れることができますか?それを爆発している*実際の理由で更新しますか? –