一直在尝试使用最小起订量进行单元测试。
这是一个类结构。
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);
所以在模拟参数中我应该调用什么函数来设置返回值?
最佳答案
顺便说一句:IParameters.Types
是属性还是方法?
您可以只为IParameter
参数创建一个存根,因为您可能不想设置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);
...