public User AddTags(int userId, List<Tag> Tags)
{
var user = GetUserById(userId);
Tags.ForEach(tag => user.Tags.Add(tag));
return _repository.Update(user);
}
public interface IRepository<T> where T:class
{
void Add(T item);
void Remove(T item);
T Update(T item);
}
在測試類如何對單元測試以下方法?
protected IRepository<User> Repository;
protected UserService Service;
public Mock<IRepository<User>> MockUserRepository = new Mock<IRepository<User>>();
Repository = MockUserRepository.Object;
Service = new UserService(UnitOfWork, Repository);
//I don't quite understand how to mock the Update method.
var result = Service.AddUserTags(1,Tags);
Assert.AreEqual(result.UserTags.Count(),3);
我有一個List<User> users
和List<Tag> tags
。
我使用EF,NUnit,MOQ和通用存儲庫模式。
編輯:
在GetUserById
return _repository.GetAll().Where(_ => _.UserId == userId).SingleOrDefault();
I have mocked it doing the following
MockUserRepository.Setup(_ => _.GetAll()).Returns(Users.AsQueryable());
請參閱我的編輯。 –
添加標籤後不應該計數爲4,不會有真正的更新發生? –
你怎麼得到4?我添加了3個標籤,是嗎?而且,沒有真正的更新發生,因爲我們正在嘲笑存儲庫。 –