Juv*_*vil 2 c# unit-testing moq mocking
一直在尝试使用moq进行单元测试.
这是一个类结构.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我需要学习如何正确调用_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);
Run Code Online (Sandbox Code Playgroud)
所以在mockparams中我应该调用什么函数来设置返回值?
BTW:IParameters.Types
属性还是方法?
您可以为IParameter
参数创建存根,因为您可能不希望设置IList的每个方法:
class ParameterStub : List<String>, IParameter<String> { }
Run Code Online (Sandbox Code Playgroud)
然后,模拟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);
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3299 次 |
最近记录: |