我正在學習如何編寫單元測試,並且有點卡在使用Mocks。我使用Moq來嘲笑。我正在使用VS 2012自帶的內置測試框架。如果更好(我可以解決我的問題),我可以切換到NUnit。我有一個工作模式設置單元。我正在測試的方法是重置用戶的密碼。我告訴起訂量返回基於一個唯一代碼的用戶的列表,它就是所謂的方法我測試:嘲笑對象列表
var mock = new Mock<IUnitOfWork>();
mock.Setup(u => u.UserRepository.Get(t => t.PassResetCode.Equals("test1"), null, "")).Returns(
new List<User>
{
new User { UserId = 4, FirstName = "Test4", LastName = "LastName", Email = "[email protected]", Salt = salt, Password = pass, AccountConfirmed = true, PassResetCode = "test1", PassResetExpire = new Nullable<DateTime>(DateTime.Now.Add(ts)) },
});
在我測試它的方法調用如下:
var users = unitOfWork.UserRepository.Get(u => u.PassResetCode.Equals(code));
據我所知,它並沒有返回我在測試中創建的用戶列表。我是否也需要模擬工作單元課程中的存儲庫?或者只是嘲笑工作單元界面足夠了?如果有幫助,我可以發佈更多的代碼。
在這種情況下,我仍然不太確定如何使用'It.IsAny <>()'。輸入你擁有它似乎並沒有編譯。你可以添加更多的例子,或者你需要更多的代碼來做到這一點?我感謝幫助! – ssn771
@ ssn771,對不起,有一個答案。在'It.IsAny'T應該是你傳遞給'Get'方法的委託類型。 –
Snowbear
它似乎仍然抱怨。這是錯誤信息:'參數1:無法從'System.Func'轉換爲'System.Linq.Expressions.Expression >'方法簽名GET方法是:'公共虛擬IEnumerable的獲取( 表達>濾波器= NULL, Func鍵,IOrderedQueryable > ORDERBY = NULL, 串includeProperties = 「」)' –
ssn771