如何为 return DbParameter 设置方法?
How do I setup a method to return a DbParameter?
我有一个界面,我正在尝试为单元测试模拟。它有一个接受两个参数的方法,name 和 value 以及 returns 一个 DbParameter 将根据这些参数构建
public interface IDbUnitOfWork {
DbParameter BuildParameter(string name, object value);
}
我正在尝试设置一个可以模拟 returned 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);
如何 return 填充传入参数的 DbParameter 或模拟的 DbParameter?
解决方案(感谢 Patrick)
unitOfWorkMock
.Setup(u => u.BuildParameter(It.IsAny<string>(), It.IsAny<object>()))
.Returns((string name, object value) => Mock.Of<DbParameter>(p=> p.ParameterName == name && p.Value == value));
因为 DbParameter
is abstract 等可以被嘲笑,我相信这应该可以解决问题:
unitOfWorkMock
.Setup(u => u.BuildParameter(It.IsAny<string>(), It.IsAny<object>()))
.Returns((name, value) =>
Mock.Of<DbParameter>(x => x.ParameterName == name && x.Value == value)
);
我有一个界面,我正在尝试为单元测试模拟。它有一个接受两个参数的方法,name 和 value 以及 returns 一个 DbParameter 将根据这些参数构建
public interface IDbUnitOfWork {
DbParameter BuildParameter(string name, object value);
}
我正在尝试设置一个可以模拟 returned 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);
如何 return 填充传入参数的 DbParameter 或模拟的 DbParameter?
解决方案(感谢 Patrick)
unitOfWorkMock
.Setup(u => u.BuildParameter(It.IsAny<string>(), It.IsAny<object>()))
.Returns((string name, object value) => Mock.Of<DbParameter>(p=> p.ParameterName == name && p.Value == value));
因为 DbParameter
is abstract 等可以被嘲笑,我相信这应该可以解决问题:
unitOfWorkMock
.Setup(u => u.BuildParameter(It.IsAny<string>(), It.IsAny<object>()))
.Returns((name, value) =>
Mock.Of<DbParameter>(x => x.ParameterName == name && x.Value == value)
);