2

以下のシナリオでは、抽象基本クラス メソッドのテスト ケースを作成する必要があります。

     public abstract class baseclass{
     public bool MyBaseMethod(){
        if(User.Identity.IsAuthenticate)
         {.....}
       }
     }
     public class deriveclass: baseclass{
     }

私のテストフィクスチャクラスには、次のようなテストメソッドがあります。

     [Test]
      public void MyBaseMethodtest()
      {
       SetUserIdentity(true);
       var obj = new deriveclass();
       var result = obj.MyBaseMethod();

       //test cases follows
       ..........
       }
      private void SetUserIdentity(bool login = false)
      {
        var identity = new Mock<ClaimsIdentity>() { DefaultValue = DefaultValue.Mock };
        if (login)
        {
            identity.Setup(p => p.IsAuthenticated).Returns(true);
        }
        var principal = new ClaimsPrincipal(identity.Object);
        var httpContext = new Mock<HttpContextBase> { DefaultValue = DefaultValue.Mock };
        httpContext.SetupGet(x => x.User).Returns(principal);
        controller.ControllerContext = new ControllerContext(httpContext.Object, new RouteData(), controller);

    }

しかし、 MyBaseMethod を参照しようとすると、 User オブジェクトに対して null 参照エラーが発生します。基本クラスではなく派生クラスのコントローラーコンテキストを設定しているため、これが起こっていると思います。同様のシナリオをグーグルで検索しようとしましたが、見つかりませんでした。

4

1 に答える 1