我开始为我们的项目建立单元测试。我们决定让Moq协助我们对存储库的“嘲弄”,因为我们不想针对实时数据库运行测试。ASP.Net - MVC和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);
}
EDIT = == ===================== ==========
以下情况如何?
[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);
}
您目前的GetMessage测试问题是什么?它是否会抛出异常? – 2009-12-16 15:29:46
我已更新该帖子。返回值为空,因此测试失败 – LiamB 2009-12-16 15:30:14
但您期望什么呢? GetMessaage方法是否查询存储库? IMessageRepository接口是什么样的? – 2009-12-16 15:37:10