1

必要に応じて、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; }
}
4

1 に答える 1

0

Molesは、returnタイプのないメソッドをシムできる必要があります。何かがMolesがメソッドを迂回するのを妨げています。

モックを作成したり(これには時間がかかる場合があります)、Molesで呼び出しをシミングする代わりに、スタブと依存性注入を使用することをお勧めします。

于 2012-08-08T19:03:18.183 に答える