Я начинаю создавать модульные тесты для нашего проекта. Мы решили, что Moq поможет с «пересмешкой» репозиториев, так как мы не хотим запускать тесты с работающей БД.
Я, очевидно, неправильно использую Moq. Как написать тест GetMessage? Первые 2, кажется, работают нормально.
Возвращаемое значение теста GetMessage всегда равно нулю, поэтому тест не пройден
private Mock<IMessageRepository> _mockRepository;
private IMessageBoardService _service;
[TestInitialize]
public void Initialize()
{
_mockRepository = new Mock<IMessageRepository>();
_service = new MessageBoardService(_mockRepository.Object);
}
[TestMethod]
public void CreateMessage()
{
var result = _service.CreateMessage("Test", "Description", 8000, 0);
Assert.IsNotNull(result);
}
[TestMethod]
public void CreateComment()
{
var Message = _service.CreateMessage("Test", "Description", 8000, 0);
var Result = _service.CreateComment("Test Comment", Message.MessageID, 0);
Assert.IsNotNull(Result);
}
[TestMethod]
public void GetMessage()
{
var Message = _service.CreateMessage("Test", "Description", 8000, 0);
_service.AddMessage(Message);
_service.Save();
var RetMessage = _service.GetMessage(Message.MessageID); //Always returns Null
Assert.IsNotNull(RetMessage);
}
РЕДАКТИРОВАТЬ = == ===============================
А как насчет следующего?
[TestMethod]
public void GetMessage()
{
var tmpMessage = _service.CreateMessage("Test", "Description", 5, 0);
_mockRepository.Setup(r => r.GetMessage(It.IsAny<int>()))
.Returns(tmpMessage);
var RetMessage = _service.GetMessage(tmpMessage.MessageID);
Assert.IsNotNull(RetMessage);
}