pan*_*hei 6 c# mocking moles pex-and-moles
我怎样才能扼杀我在类中使用的DataContext来将消息写入表中.我想声明LINQ写入的表具有预期的消息计数.这是我到目前为止所拥有的.
var context = new MJustTestingDataContext();
MyMessagewriter writer = new MyMessageWriter(context);
var messageList = new List<MIncmoingMessage>();
MTable<MIncomingMessage> messageTable = new MTable<MIncomingMessage>();
messageTable.Bind(messagesLinqList.AsQueryable());
Run Code Online (Sandbox Code Playgroud)
如果我在我的测试类中使用xUnit这个代码,我会得到这个异常
Microsoft.Moles.Framework.Moles.MoleNotImplementedException: DataContext.Dispose() was not moled.
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么以及如何在痣上实现DataContext.Dispose()?我在没有Pex的情况下独立使用鼹鼠.
MoleNotImplementedException当您创建一个新的 Mole 时,其方法和属性的默认行为是在调用它们时抛出 a 。
要实现摩尔,您可以执行以下操作
我重读了这个问题,您可能遇到了问题,因为context.Dispose = () => {};,这意味着Dispose在摩尔实例上调用该方法时不会发生任何事情。Dispose它是在基类中定义的。对于摩尔基方法,您需要执行以下操作:
var context = new MJustTestingDataContext();
var baseContext = new MDataContext(context);
baseContext.Dispose = () => {};
Run Code Online (Sandbox Code Playgroud)
您需要实现被测试代码调用的每个属性/方法,或者您可以使用 method 全局设置mole实例的默认行为BehaveAsDefaultValue。这样,mole 中的每个方法都不会执行任何操作,并返回其返回类型的默认值(如果存在),而不是抛出MoleNotImplementedException. 但是,如果您需要这种行为,最好使用存根而不是摩尔。
| 归档时间: |
|
| 查看次数: |
1700 次 |
| 最近记录: |