[英]C# Mock dependend validators with FluentValidator
我有一個這樣的驗證器:
RuleFor(a => a.Id)
.IsRequired()
.MustBeValidId()
.MustExistInDatabase<Command, ChangeRequest>(context)
.DependentRules(() =>
{
RuleFor(a => a.Description)
.IsRequired()
...
});
我想測試Description
屬性,只有在Id
屬性有效時才會評估該屬性。
但出於測試目的,這不是必需的。
此測試應通過:
GetValidator().ShouldNotHaveValidationErrorFor(command => command.Description, "my description");
但它失敗了,因為 Id 屬性無法驗證。
為了測試它,我必須創建一個 InMemory EFCore 提供程序創建實體以檢查它是否存在於數據庫中,然后Description
驗證器不會失敗。
有什么方法可以模擬 Id 驗證器,以便我可以輕松地測試依賴規則?
FV 單元測試擴展最終會在后台運行驗證。 你能模擬驗證器的一部分嗎? 大概。 但在這種情況下我不會這樣做。 SUT 應該是真正的交易,您應該模擬依賴項(數據庫上下文)。
我假設.MustExistInDatabase<Command, ChangeRequest>(context)
行是問題所在; 該擴展名是什么樣的? 如果您不想啟動/播種內存中的數據庫上下文,則可以模擬數據庫上下文的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.