簡體   English   中英

流利的斷言Should()。Should()。BeEquivalentTo忽略排除的成員

[英]Fluent Assertions Should().Should().BeEquivalentTo ignores excluded member

我正在集成測試中創建兩個相同類型的對象,但是試圖排除在對象創建時生成的自動增量成員。

我成功排除了RecordId和Number屬性,但是對Id屬性的等效性測試失敗。 RecordId和number屬性是從抽象類繼承的,但Id的不同之處在於,它是從抽象類繼承的抽象屬性,然后將其重寫。

Id屬性是抽象字符串屬性,並且是只讀的。

//CreateJob creates indentical jobs, but with autoincremented id, number and recordid   
Job job1 = CreateJob();
Job job2 = CreateJob();

job1.Should().BeEquivalentTo(job2, config => config
   .Excluding(o => o.RecordId)
   .Excluding(o => o.Id)
   .Excluding(o => o.Number)
);

消息:預期成員ID為“ 45”,但“ 46”在“ 6”(索引1)附近有所不同。

使用配置:-使用聲明的類型和成員

  • 按值比較枚舉
  • 排除成員root.RecordId
  • 排除成員root.Id
  • 排除成員root.Number
  • 按名稱匹配成員(或拋出)
  • 沒有自動轉換。
  • 嚴格遵守字節數組中的項目順序

我也嘗試使用WithTracing()選項運行,但是它沒有提供有關該屬性的信息。

我已經閱讀了文檔,但沒有發現任何指示不能排除抽象或虛擬屬性的信息,我錯了嗎?

我已經在5.5.0和5.5.3版上嘗試過,結果相同。

編輯:

我已經檢查並再次檢查了該類或其繼承的類均不等於。

我看到了這一點,我的對象被Equals(object obj)覆蓋了,但是我沒想到BeEquivalentTo函數會受到影響。

我以為BeEquivalentTo會通過對象圖來代替?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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