3

テストしようとしている非常に単純な方法があります。_interactionService は、顧客の削除についてユーザーに確認を求めるダイアログを表示します。ボックスで適切なボタンをクリックすると、指定されたアクションが呼び出されます。アクションはコンテキストを操作し、変更を保存します。保存が完了すると、別のアクションが呼び出されます。

    private void Delete(object entity)
{
    _interactionService.ShowConfirmationBox("Delete?", "Are you sure you want to delete this customer?", () =>
        {
            Customer customer = entity as Customer;
            Context.Attach(customer);
            Context.Delete(customer);
            Context.Save(() => DoSomethingElseWhenSaveComplete);
        });
}

このメソッドをテストする方法がわかりません。サービスとコンテキストをモックしましたが、クロージャーをテストするにはどうすればよいですか?

4

2 に答える 2

3

コンテキストがモックされている場合は、テストでコールバックを使用できます。

Action saveAction = null;
contextMock
  .Setup(c => c.Save(It.IsAny<Action>())
  .Callback<Action>(a => saveAction = a);

// Call delete...

Assert.IsNotNull(saveAction);

saveAction();

// Assert that DoSomethingElseWhenSaveCompleted was done
于 2012-04-19T15:53:59.527 に答える
0

UI レイヤーではなく、サービス (API) レベルでこれをテストする必要があります。テストで何を達成しようとしていますか?

  1. 削除を呼び出すことができることを確認しようとしていますか

また

  1. 削除方法をテストしようとしていますか

私の仮定は 2 番なので、サービス レイヤーと UI クラスに対するテストを作成します。

于 2012-04-19T16:16:38.387 に答える