Я никогда не использовал фреймворки Mock и фактически не знаком с ASP.NET MVC, тестированием и всем этим связанным с этим материалом.
Я пытаюсь выяснить, как использовать фреймворк Moq для тестирования, но могуне заставит это работать.Вот что у меня сейчас: Мой интерфейс репозитория:
public interface IUserRepository {
string GetUserEmail();
bool UserIsLoggedIn();
ViewModels.User CurrentUser();
void SaveUserToDb(ViewModels.RegisterUser viewUser);
bool LogOff();
bool LogOn(LogOnModel model);
bool ChangePassword(ChangePasswordModel model);
}
Мой конструктор контроллера, я использую Ninject для инъекций, он отлично работает
private readonly IUserRepository _userRepository;
public HomeController(IUserRepository userRepository) {
_userRepository = userRepository;
}
Самый простой метод в контроллере:
public ActionResult Index() {
ViewBag.UserEmail = _userRepository.GetUserEmail();
return View();
}
И мой метод теста:
[TestMethod]
public void Index_Action_Test() {
// Arrange
string email = "test@test.com";
var rep = new Mock<IUserRepository>();
rep.Setup(r => r.GetUserEmail()).Returns(email);
var controller = new HomeController(rep.Object);
// Act
string result = controller.ViewBag.UserEmail;
// Assert
Assert.AreEqual(email, result);
}
Я предполагаю, что этот тест должен пройти, но он не проходит с сообщением Assert.AreEqual failed. Expected:<test@test.com>. Actual:<(null)>.
Что я делаю не так?
Спасибо