我是编写单元测试的初学者,并且我正在尝试进行测试。我将首先解释我要测试的内容。
我正在尝试测试一种将消息保存在 Mvc 4 项目中的方法。该方法被调用SaveMessage
,如下所示。
namespace ChatProj.Service_Layer
{
public class UserService : IUserService
{
public MessageContext messageContext = new MessageContext();
public UserService()
{
_messageRepository = new MessageRepository(messageContext);
}
private IMessageRepository _messageRepository;
-> public void SaveMessage(Message message)
{
messageContext.Messages.Add(message);
_messageRepository.Save();
}
该方法_messageRepository.Save
在SaveMessage
我的 DAL 层中实现,MessageRepository
如下所示:
public void Save()
{
context.SaveChanges();
}
这种保存方式似乎有点过于复杂,但我以这种方式构建项目,因为我不希望服务层 ( IUserService
& UserService
) 处理可以 & 应该 (我认为) 由数据访问层 ( IMessageRepository
& MessageRepository
)处理的操作.
现在是棘手的部分。我一直在尝试了解如何对此进行单元测试。这是我的尝试:
namespace ChatProj.Tests
{
[TestFixture]
class MessageRepositoryTests
{
[SetUp]
public void Setup()
{
}
[Test]
public void SaveMessage_SaveWorking_VerifyUse()
{
//Arrange
var userServiceMock = new Mock<UserService>();
var message = new Message { MessageID = 0, Name = "Erland", MessageString = "Nunit Test", MessageDate = DateTime.Now };
var repositoryMock = new Mock<IMessageRepository>();
var contextMock = new Mock<MessageContext>();
MessageRepository messageRepository = new MessageRepository(contextMock.Object);
UserService userService = new UserService();
//Act
userService.SaveMessage(message);
//Assert
repositoryMock.Verify(m => m.Save());
userServiceMock.Verify(m => m.SaveMessage(message));
}
}
我收到此错误:Imgur link,我不太确定如何解决它。我已经尝试查看其他几个 SO 帖子,但我无法进行测试。
所以我想知道,我实际上如何让我的单元测试工作?