Ответы пользователя по тегу Entity Framework
  • Как использование Moq для тестирования репозиториев?

    Milk92
    @Milk92
    .NET
    Вкуривайте.
    public UserController :Controller
    { 
       private IUserRepository _userRepository;
    public UserController( IUserRepository _userRepository)
    {
    this._userRepository = _userRepository;
    }
       
    public ViewResult GetUsers(int count)
    {
    var users = _userRepository.GetAll().Take(count);
    
    return View(users);
    }
    
    }

    [TestMethod]
    public void GetFiveUsers()
    {
    //organization
      Mock<IUserRepository> mock = new Mock<IUserRepository>();
      mock.Setup(x=>x.Users).Returns(new List<Users>{
      new User{ Id = Guid.NewGuid(),Name="User#1"},
      new User{ Id = Guid.NewGuid(),Name="User#2"},
      new User{ Id = Guid.NewGuid(),Name="User#3"},
      new User{ Id = Guid.NewGuid(),Name="User#4"}
    }); 
    //action
    UserController controller = new UserController(mock.Object);
    IEnumerable<User> usersResult = (IEnumerable<User>)controller.GetUsers(3).Model;// return type action method: ViewResult
    //assertion
    List<Users> users = usersResult.ToList();
    Assert.IsTrue(users.Count()==3);
    Assert.AreEqual(users[0].Name, "User#1");
    Assert.AreEqual(users[1].Name ,"User#2");
    Assert.AreEqual(users[2].Name, "User#3");
    }
    Ответ написан