如果需要,您将如何使用Moq和Moles测试下面的代码?
我想检查在引发“SomeEvent”时调用一次“TestCommand.RaiseCanExecuteChanged()”命令。
难点在于,RaiseCanExecuteChanged是Microsoft.Practices.Prism.Commands.DelegateCommandBase上的公共非虚方法,而Moles引入了其他复杂功能,其中之一就是它似乎无法模拟只有一个没有方法的方法回报价值。
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; }
}
答案 0 :(得分:0)
Moles应该能够填充没有返回类型的方法。有些东西阻止了鼹鼠绕道而行。
我建议使用存根和依赖注入,而不是构建模拟(这可能需要一段时间)或使用Moles填充调用。