1

私は 1 つの責任を持つ CommandController クラスを持っており、CommandService に Module コマンドを提供します。実装を非表示にするために、クラスはコマンドを登録し、実装にプライベート メソッドを含めます。次のようになります。

internal class CommandController
{
    private ICommandService commandService;

    public void RegisterCommands()
    {
        this.commandService.Register("ExampleCommand", this.ExecuteExampleCommand);
    }

    private void ExecuteExampleCommand()
    {
        ... implementation here ...
    }
}

一度に複数のクラスをテストしないように、ICommandService をモックする単体テストで ExecuteExampleCommand をテストするにはどうすればよいですか (とにかく、サービスが UT 環境に登録されていない可能性があります)。

質問が十分に明確であることを願っています。

4

2 に答える 2

1

を使用して、モックのメソッド呼び出し引数に簡単にアクセスできますWhenCalled。たとえば、渡されたアクションを実行したい場合は、次のようにRegisterできます。

registry.Stub(r => r.Register(
        Arg<String>.Is.Equal("ExampleCommand"),
        Arg<Action>.Is.Anything))
    .WhenCalled(invocation => ((Action) invocation.Arguments[1])());

RegisterCommands呼び出されると、モックはプライベート メソッドを実行します。

于 2013-06-19T10:12:38.760 に答える