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));