我對多個模型對象中的某些屬性有類似的規則,我想用自定義屬性驗證器替換它們以避免單元測試中的代碼重複。如何單元測試簡單的屬性有驗證器集?
我有我的財產驗證:
public class IntIdPropertyValidator: PropertyValidator
{
public IntIdPropertyValidator()
: base("Property {PropertyName} should be greater than 0")
{
}
protected override bool IsValid(PropertyValidatorContext context)
{
var value = (int)context.PropertyValue;
return value > 0;
}
}
,並在型號驗證類佈線起來:
public class SomeRequestValidator : AbstractValidator<CreateWordRequest>
{
public SomeRequestValidator()
{
RuleFor(x => x.Id).SetValidator(new IntIdPropertyValidator());
}
}
試圖測試:
[Test]
public void Validate_IdHasValidator_Success()
{
Init();
validator.ShouldHaveChildValidator(x => x.Id, typeof(IntIdPropertyValidator));
}
但測試總是失敗。
那麼,我該如何測試驗證器是否被設置爲屬性ID?
嗯,是的,我知道,這就是我自己測試自定義驗證器的方式。但問題是,現在我不想爲每個具有驗證者支持的模型類都這樣做。我想測試驗證器是否真正爲prop設置,如果它工作正確則不測試它,因爲這是自定義驗證器的測試所做的。 – liri2006
@ liri2006我用一種方式更新了我的答案,以進行您正在查找的驗證...我也解釋了爲什麼您不應該這樣做...... –
這非常有幫助!代碼和解釋。 – liri2006