我有一個save()方法,不太確定如何測試。下面是我的代碼。moq,如何測試保存方法?
public interface IRepository<T>
{
T Get(int id);
void Save(T item);
void Delete(int id);
}
save方法不返回任何值,我無法比較該值。然而,我已經有4個用戶,添加另一個後,我只檢查用戶總數,是否足以測試它?
[Test]
public void Add_a_new_smoothie_user_should_return_total_5_users()
{
// Arrange
var totalUsers = _users.Count();
_mockUserRepository.Setup(s => s.Save(It.IsAny<User>()))
.Callback((User user) => _users.Add(user));
var newUser = new User
{
Id = 3,
Email = "[email protected]",
Password = "1234567".Hash(),
Firstname = "",
Lastname = "",
CreatedDate = DateTime.Now,
LastLogin = DateTime.Now,
AccountType = AccountType.Smoothie,
DisplayName = "",
Avatar = "",
ThirdPartyId = "",
Status = Status.Approved,
Ip = "127.0.0.1"
};
// Act
_mockUserRepository.Object.Save(newUser);
// Assert
Assert.AreEqual(5, _users.Count());
Assert.AreEqual(1, _users.Count() - totalUsers);
}
你能概述一下你的'保存'方法嗎?你有「代碼覆蓋率」嗎?我不認爲將'x'用戶添加到您的模擬將有效驗證該方法。您應該專注於測試所有流程(主要,替代,例外等),以便代碼覆蓋率相當高。 – Channs 2012-07-12 19:56:51
我不太明白你的moq版本庫保存方法來執行你的委託。你在這裏測試什麼?您能否提供在此測試中執行的測試代碼? – Rafal 2012-07-12 19:57:07
我的「保存」方法只是將新用戶保存到數據庫。我還沒有代碼,只是界面。我認爲你必須在編寫具體方法之前先寫單元測試。 – qinking126 2012-07-12 20:06:42