Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何设置返回DbParameter的方法?_C#_Unit Testing_Moq - Fatal编程技术网

C# 如何设置返回DbParameter的方法?

C# 如何设置返回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

我有一个接口,我正在尝试单元测试的模型。它有一个方法,该方法接受两个参数,name和value,并返回一个要根据这些参数构建的DbParameter

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)
    );