【发布时间】:2015-07-30 20:05:25
【问题描述】:
我的应用能够更新项目。我想为此创建一个单元测试。
这是在 c# 中使用 Moq。当我在模拟中调用 setup 方法时。我让它获取现有项目,然后根据需要对其进行更新。
messageMock.Setup(m => m.SaveMessage(It.IsAny<Message>()))
.Callback((Message msg) =>
{
var oldMsg = _messages.FirstOrDefault(m => m.Id == msg.MessageID);
if (oldMsg != null)
{
oldMsg.Description = msg.Description;
oldMsg.IsActive = msg.IsActive;
oldMsg.Name = msg.Name;
oldMsg.Type = msg.Type;
}
}).Verifiable();
而被测方法是:
public void SaveMessage(Message message)
{
var windowsIdentity = WindowsIdentity.GetCurrent();
message.ModifiedBy = windowsIdentity != null ?
windowsIdentity.Name :
string.Empty;
message.ModifyDate = DateTime.Now;
Messaging.Entry(message).State = EntityState.Modified;
Messaging.SaveChanges();
}
如果更新项目的逻辑是在 Moq 中完成的,那么我只是在测试测试。如何测试更新功能的业务逻辑?
【问题讨论】:
-
贴出你要测试的方法的代码!
-
@user721146 我将方法添加到您的问题中,但是该方法看起来像您要
mock的方法,而不是您要测试的方法。 -
你应该模拟你的被测类正在调用的对象;在这种情况下,您想模拟
Messaging引用的任何对象。
标签: c# unit-testing moq