1
如果需要,您将如何使用Moq和Moles测试下面的代码?用Moq和Moles测试非虚拟公共方法?
我想检查“TestCommand.RaiseCanExecuteChanged()”命令是否在引发“SomeEvent”时调用一次。
难度在于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; }
}
你是对的,只是一个痣新手的错误。现在如何让鼹鼠一起玩,但这是另一个问题。 – SDK 2012-08-10 08:51:15