必要に応じて、MoqとMolesを使用して以下のコードをどのようにテストしますか?
「SomeEvent」が発生したときに「TestCommand.RaiseCanExecuteChanged()」コマンドが1回呼び出されることを確認したいと思います。
難しいのは、RaiseCanExecuteChangedがMicrosoft.Practices.Prism.Commands.DelegateCommandBaseのパブリック非仮想メソッドであり、Molesが他の複雑さをもたらすことです。その1つは、戻り値なしでメソッドだけをモックできないようです。
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; }
}