9

メソッドをテストして、トランザクションが正しく保存されることを確認したいと思います。内部では、Membership.GetUser()を呼び出して、毎回テストが失敗する原因となるユーザーを確認します。Membership.GetUser()が常に有効な名前を返すようにこれをモックする方法はありますか?

Moq、C#、ASP.Net4.5MVCを使用しています

4

2 に答える 2

5

要するに、あなたはできません。そのため、このような「サービス」へのすべての呼び出しは、抽象化の背後に隠されている必要があります。

そのサンプルは、デフォルトのMVCテンプレートで確認できます。

于 2012-09-13T14:09:57.970 に答える
3

はい、Sergが言ったように、実際のサービスを実装するためのインターフェースを提供することで、これをモックすることができます。このインターフェースには、次のような、呼び出しているパブリックメソッドがあります。

public interface IMyServiceInterface
{
    IMembershipUser GetUser();
    // other methods you want to use...
}

単体テストでは、次のように言います。

var mockService = new Mock<IServiceInterface>();
mockService.Setup(mock => mock.GetUser()).
    Returns(new MembershipUserImplementation("MyTestUser", otherCtorParams));

私の例では、MembershipUserのラッパーを作成しますが、抽象化の背後にもある必要があるようです。

于 2012-10-01T20:12:58.890 に答える