我有以下方法:
public class MyClass
{
public Repository UserRepository { get; set; }
public void CreateUser(Message someMsg)
{
if (someMsg.CanCreate)
{
var obj = new object();
UserRepository.Save(obj)
}
}
}
在我的测试用例中,我使用Moq模拟了ObjRepository,并且我想在"Save()“方法上调用verify。但是,save方法接受在被测方法中创建的对象,我不能模拟该对象。
有没有办法使用Moq来解决这个问题呢?我做错了吗?
发布于 2010-07-16 02:49:28
您可以在您的mock上进行以下设置:
objRepMock.Setup(or => or.Save(It.IsAny<object>()).Callback(obj => {
// Do asserts on the object here
}
发布于 2010-07-16 03:16:18
marcind开始行动了,但我想我应该放进更多的代码。您的测试将如下所示:
var objMock = new Mock<Repository>();
objMock.Setup(x=>x.Save(It.IsAny<object>)).Verifiable();
var myclass = new MyClass{Repository = objMock.object};
var mymessage = new Mock<Message>();
myclass.CreateUser(mymessage.object);
objMock.Verify(x=>x.Save(It.IsAny<object>), Times.AtLeastOnce);
发布于 2010-07-16 02:45:14
你可以使用依赖注入。
public Repository ObjRepository { get; set;}
public void doStuff()
{
var obj = new object();
doStuff(obj);
}
public void doStuff(Object obj)
{
ObjRepository.Save(obj)
}
https://stackoverflow.com/questions/3258712
复制相似问题