【发布时间】:2011-09-03 07:46:12
【问题描述】:
在较旧版本的 MOQ 中,以下代码可以正常工作(例如 3.1.416.3)。现在没有了。如何将我的模拟变成工作?问题是接口继承了另一个接口并重新定义了一个字段。因此,我的模拟现在需要为这两个字段配置值,因为这在我的 Code1() 和 Code2() 调用中使用
public interface I
{
string field { get; }
}
public interface IModi : I
{
new string field { get; set; }
}
public class P : IModi
{
private string val;
string I.field
{
get { return val; }
}
public string field
{
get { return val; }
set { val = value; }
}
public static void Code1(I p)
{
Console.WriteLine(p.field);
}
public static void Code2(IModi p)
{
Code1(p);
Console.WriteLine(p.field);
}
}
失败的测试
[TestFixture]
class MoqTests
{
[Test]
public void testinterfaces()
{
MockRepository factory = new MockRepository(MockBehavior.Strict);
var mock = factory.Create<IModi>();
mock.Setup(x => x.field).Returns("hello");
P.code2(mock.Object);
}
}
错误
Moq.MockException:I.field 调用失败,模拟行为 Strict。 模拟上的所有调用都必须有相应的设置。
【问题讨论】:
标签: unit-testing moq