我有一個單元測試,其中我嘲笑某些具有DateTime屬性的結果,該屬性在執行操作時設置 - 「CreatedOn」屬性。由於我無法創建我的結果並同時執行操作,因此我的Assert.AreEqual總是失敗。我如何測試我的兩個對象是否相同除了某些DateTime字段?Assert.AreEqual在兩個對象上,但忽略DateTime屬性
2
A
回答
1
實際上有兩個選項:
- 變化
CreatedOn
創建時間,使性能賽後。根據您的API,這可能會也可能不會。 - 製作一個方法來檢查所有其他屬性,但忽略
CreatedOn
屬性。只要使用它。這實際上只是多個調用Assert.AreEqual
,但是對於單個屬性,不僅僅是整個對象。
+0
這聽起來像是最簡單的解決方案,但並不健壯。我想我可能會暫時做到這一點,直到我找到一種簡單且穩健的方式。 –
1
我平時做的以下幾件事之一:
- 您可以爲您的SUT TimeProvider依賴和使用該供應商來獲得當前的日期。這將允許您設置任何當前日期。
- 如果您正在比較的對象是由SUT依賴項之一返回的,那麼您可以設置模擬依賴關係以返回您在測試中檢查的完全相同的對象實例。
+1
這聽起來像是最強大的解決方案,但會使實現過於複雜。 –
+0
@rushonerok不幸的是,在真正的單元測試中,你應該模擬所有的外部資源(數據庫,文件等),當前時間也是外部資源作爲配置文件,所以是的,它應該被嘲笑:) –
相關問題
- 1. 閱讀對象屬性時忽略NullReferenceException
- 2. Automapper忽略屬性忽略
- 3. RedirectToAction上忽略HttpGet屬性?
- 4. 忽略模型屬性上的屬性
- 5. 將屬性分配給對象時忽略未知屬性
- 6. NUnit Assert.AreEqual DateTime Tolerances
- 7. datetime忽略tzinfo?
- 8. XML忽略屬性
- 9. AutoMapper忽略屬性
- 10. 忽略styleSheetTheme屬性
- 11. System.ComponentModel - 忽略屬性
- 12. Newtonsoft忽略屬性?
- 13. 比較兩個datetime對象
- 14. 的Json忽略屬性上JsonSubTypes
- 15. Automapper - 忽略基類上的屬性
- 16. 對象:深忽略
- 17. ASP.NET MVC:OutputCache屬性忽略RequireHttps屬性?
- 18. SQLAlchemy - '表'對象沒有屬性'datetime'
- 19. 忽略可編碼對象非可編碼可選屬性
- 20. mongodb /節點 - 忽略某些對象屬性
- 21. 從流中讀取對象時忽略未知屬性
- 22. 忽略對象映射器級別的屬性?
- 23. json序列化期間忽略對象屬性
- 24. TimeZone.GetUtcOffset()需要DateTime,但是DateTime的時區被忽略,爲什麼?
- 25. GROUP BY忽略屬性
- 26. NHibernate忽略proxyfactory屬性
- 27. 忽略CSS顏色屬性
- 28. NHibernate忽略ForeignKey屬性
- 29. 忽略特定屬性
- 30. .NET XMLSERIALIZE,忽略類屬性
你能展示你的測試方法代碼嗎?我認爲如果你嘲笑某些東西的結果,那麼你可以使用任何CreatedOn屬性值來提供任何返回值 –