当使用类不变量时,代码契约似乎到处注入代码。像这样的东西
[ContractClassFor(typeof(IX))]
interface IXContract
{
[ClassInvariant]
void Invariant() { ... }
}
[ContractClass(typeof(IXContract))]
interface IX { event EventHandler b; }
var a = new Mock<IX>();
a.Raise(x => x.b += null);
失败并显示错误消息
Could not locate event for attach or detach method Void $InvariantMethod$().
有人知道解决方案吗?
该单元测试在运行时“通过”,没有生成异常:
[ContractClassFor(typeof(IX))]
class IXContract
{
[ContractInvariantMethod]
void Invariant() { }
}
[ContractClass(typeof(IXContract))]
public interface IX { event EventHandler b; }
/// <summary>
/// Summary description for UnitTest1
/// </summary>
[TestClass]
public class UnitTest1
{
public void MyTest()
{
var a = new Mock<IX>();
a.Raise(x => x.b += null);
}
}
我不完全确定发生了什么以及如何编译(或转录)上述内容,但我认为您不能使用“ContractClassFor”属性来装饰接口,并且您当然不能实现“{ ...}”在界面中。您还需要将您的接口 IX 公开以模拟它(或者使用属性中的 InternalsVisibleTo() 城堡代理进行内部操作)。
希望这会有所帮助,但如果这不能引导您实现您想要做的事情,请随时使用新代码更新您的帖子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)