C# 用Moq和摩尔数测试非虚拟公共方法?
如果有必要,您将如何使用Moq和Moles测试下面的代码 我想检查在引发“SomeEvent”时是否调用了一次“TestCommand.RaiseCanceTechChanged()”命令 困难在于RaiseCanExecuteChanged是Microsoft.Practices.Prism.Commands.DelegateCommandBase上的一个公共非虚拟方法,Moles引入了其他复杂因素,其中之一是它似乎无法模拟没有返回值的方法C# 用Moq和摩尔数测试非虚拟公共方法?,c#,moq,moles,C#,Moq,Moles,如果有必要,您将如何使用Moq和Moles测试下面的代码 我想检查在引发“SomeEvent”时是否调用了一次“TestCommand.RaiseCanceTechChanged()”命令 困难在于RaiseCanExecuteChanged是Microsoft.Practices.Prism.Commands.DelegateCommandBase上的一个公共非虚拟方法,Moles引入了其他复杂因素,其中之一是它似乎无法模拟没有返回值的方法 using Microsoft.Practices.
using Microsoft.Practices.Prism.Commands;
public class SomeEventClass
{
public event Action SomeEvent;
}
public class TestClass
{
public TestClass(SomeEventClass someEventClass)
{
TestCommand = new DelegateCommand(() => { /* do stuff */}, CanExecute);
someEventClass.SomeEvent += () => TestCommand.RaiseCanExecuteChanged();
}
private bool CanExecute()
{
//Some logic
return true;
}
public DelegateCommand TestCommand { get; private set; }
}
Moles应该能够填充没有返回类型的方法。某种东西正在阻止鼹鼠绕行这种方法
我建议使用存根和依赖注入,而不是构建模拟(这可能需要一段时间)或用Moles填充调用。你是对的,只是Moles新手犯了个错误。现在,如何让鼹鼠和最小起订量一起玩,但这是另一个问题。