Je commence à construire des tests unitaires pour un projet que nous avons. Nous avons décidé Moq pour aider avec le 'Mocking' des référentiels car nous ne voulons pas exécuter les tests sur la base de données en direct.ASP.Net - MVC et Moq
J'utilise évidemment Moq de manière incorrecte, Comment écrirait-on le test GetMessage? Les 2 premiers semblent fonctionner correctement.
La valeur de retour de l'essai GetMessage est allways null si le test échoue
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);
}
EDIT = == ===================== ==========
Qu'en est-il de ce qui suit?
[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);
}
Quel est votre problème actuel avec le test GetMessage? Est-ce qu'il lance une exception? –
J'ai mis à jour le post. La valeur de retour est toujours nulle, donc le test échoue – LiamB
Mais qu'attendez-vous à la place? La méthode GetMessaage interroge-t-elle le référentiel? À quoi ressemble l'interface IMessageRepository? –