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());