我有以下方法;
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?我做错了吗?
答案 0 :(得分:6)
您可以在模拟上进行以下设置:
objRepMock.Setup(or => or.Save(It.IsAny<object>()).Callback(obj => {
// Do asserts on the object here
}
答案 1 :(得分:2)
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);
答案 2 :(得分:1)
您可以使用依赖注入。
public Repository ObjRepository { get; set;}
public void doStuff()
{
var obj = new object();
doStuff(obj);
}
public void doStuff(Object obj)
{
ObjRepository.Save(obj)
}