一直在尝试使用最小起订量进行单元测试。
这是一个类结构。
public interface IParameter<T> : IList<T>
{
}
public interface IParameters
{
IParameter<string> Types;
}
public class MyClass
{
public DataTable GetResult(IParameters parameters)
{
//do work here
return dt;
}
}
class TestMyClass
{
[Test]
public void TestGetResult()
{
var _mock = new Mock<IParameters>();
_mock.SetUp(x => x.Types).Return(new [] {"1", "2"}); //Issue
var m = new MyClass()
var result = m.GetResult(_mock.Object)
Assert.IsNotNull(result);
}
}
我需要学习如何正确调用 _mock.SetUp,以便 IParameters 中的属性返回 IList 类型。
或者,我也试过这个...
var mock = new Mock<IParameters>();
var mockparams = new Mock<IParameter<string>>();
mockparams.SetReturnsDefault( ); //What should i call to add { "1", "2", "3" }
mock.Setup(x => x.ReportTypes).Returns(mockparams.Object);
那么在 mockparams 中我应该调用什么函数来设置返回值?
最佳答案
顺便说一句:IParameters.Types
是属性还是方法?
您可以只为 IParameter
参数创建一个 stub ,因为您可能不想设置 IList 的每个方法:
class ParameterStub : List<String>, IParameter<String> { }
然后,模拟 IParameters
就这么简单:
...
var mock = new Mock<IParameters>();
mock.Setup(x => x.Types).Returns(new ParameterStub() {"1","2"});
var m = new MyClass();
var result = m.GetResult(mock.Object);
...
关于c# - Moq - 设置强类型类的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10647644/