C# 如何设置返回DbParameter的方法?
我有一个接口,我正在尝试单元测试的模型。它有一个方法,该方法接受两个参数,name和value,并返回一个要根据这些参数构建的DbParameterC# 如何设置返回DbParameter的方法?,c#,unit-testing,moq,C#,Unit Testing,Moq,我有一个接口,我正在尝试单元测试的模型。它有一个方法,该方法接受两个参数,name和value,并返回一个要根据这些参数构建的DbParameter public interface IDbUnitOfWork { DbParameter BuildParameter(string name, object value); } 我试图建立一个测试用例,我可以模拟一个返回的DbParameter,但我遇到了麻烦 unitOfWorkMock = new Mock<IDbUnit
public interface IDbUnitOfWork {
DbParameter BuildParameter(string name, object value);
}
我试图建立一个测试用例,我可以模拟一个返回的DbParameter,但我遇到了麻烦
unitOfWorkMock = new Mock<IDbUnitOfWork>();
unitOfWorkFactoryMock = new Mock<IUnitOfWorkFactory>();
unitOfWorkFactoryMock.Setup(u => u.LoadUnitOfWork()).Returns(new Mock<IDbUnitOfWork>().Object);
unitOfWorkMock
.Setup(u => u.BuildParameter(It.IsAny<string>(), It.IsAny<object>()))
.Returns((name, value) => ASDASDASDASD);
unitOfWorkMock=new Mock();
unitOfWorkFactoryMock=新建Mock();
unitOfWorkFactoryMock.Setup(u=>u.LoadUnitOfWork()).Returns(new Mock().Object);
工作单元模拟
.Setup(u=>u.BuildParameter(It.IsAny(),It.IsAny()))
.返回((名称、值)=>asdasdasd);
如何返回用传入参数填充的DbParameter或模拟的DbParameter
解决方案(感谢Patrick)
unitOfWorkMock
.Setup(u=>u.BuildParameter(It.IsAny(),It.IsAny()))
.Returns((string name,object value)=>Mock.Of(p=>p.ParameterName==name&&p.value==value));
既然和so可以被嘲笑,我相信这应该可以做到:
unitOfWorkMock
.Setup(u => u.BuildParameter(It.IsAny<string>(), It.IsAny<object>()))
.Returns((name, value) =>
Mock.Of<DbParameter>(x => x.ParameterName == name && x.Value == value)
);
unitOfWorkMock
.Setup(u=>u.BuildParameter(It.IsAny(),It.IsAny()))
.返回((名称、值)=>
Mock.Of(x=>x.ParameterName==name&&x.Value==Value)
);
谢谢你,帕蒂克!你让我走上了一条新的道路,我发现了我的根本问题。最后,我需要指定name和value的数据类型。我将更新这个问题,并将答案归功于你。啊,是的,这是有道理的。请随意添加您的解决方案作为答案,并接受它!不,你回答了。
unitOfWorkMock
.Setup(u => u.BuildParameter(It.IsAny<string>(), It.IsAny<object>()))
.Returns((name, value) =>
Mock.Of<DbParameter>(x => x.ParameterName == name && x.Value == value)
);