簡體   English   中英

C# 使用 FluentValidator 模擬依賴驗證器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM