1

ProfileBase.Createを返すメソッドを作成します。

public class ProfilesProvider : ProfileBase, IProfilesProvider
{
    public ProfilesProvider GetUserProfile()
    {
        return (HttpContext.Current.Profile) as ProfilesProvider;
    }

    public ProfilesProvider GetUserProfile(string userName)
    {
        if (String.IsNullOrEmpty(userName))
            return (HttpContext.Current.Profile) as ProfilesProvider;

        return Create(userName) as ProfilesProvider;
    }
}

このコードはかなりうまく機能していますが、このメソッドの単体テストを作成しようとすると、エラーが発生しました。

System.InvalidOperationException:このメソッドは、アプリケーションの開始前の初期化フェーズでは呼び出すことができません。

PSここにテストのコードがあります:

_mockProfiles.Setup(m => m.GetUserProfile()).Returns(new ProfilesProvider());
        var result = _controller.Settings(model);

        _mockProfiles.Verify(m => m.GetUserProfile(), Times.Once());
        Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
4

1 に答える 1

1

修正しました。ProfileBase とクラスの間の依存関係を壊しただけです。

于 2013-03-27T06:59:37.573 に答える