したがって、MSのすべての愚かな静的メソッドのために、MVCでのテストは苦痛ですが、私はそれのいくつかを回避することができました-私はそれをモックできるようにメンバーシップ用のインターフェイスを作成し、それはほとんど機能しますが、私はProfileBaseを使用しています私のカスタム UserProfile オブジェクトではもちろん、静的メソッドもあり、ProfileBase から継承するため、これははるかに困難です。日曜日全体を無駄にしてしまい、これをテストする方法がわかりません。
これが私の UserPofile クラスの外観です。これは、オンラインのすべての例とまったく同じです。
namespace TaskBoardAuth.Models
{
public class UserProfile: ProfileBase
{
public static UserProfile GetUserProfile(string username)
{
return Create(username) as UserProfile;
}
public static UserProfile GetUserProfile()
{
return Create(Membership.GetUser().UserName) as UserProfile;
}
[SettingsAllowAnonymous(false)]
public string FirstName
{
get { return base["FirstName"] as string; }
set { base["FirstName"] = value; }
}
[SettingsAllowAnonymous(false)]
public string LastName
{
get { return base["LastName"] as string; }
set { base["LastName"] = value; }
}
}
}
問題は、これら 2 つのばかげたくだらない静的メソッドのためにテストできないことです。profileBase.Create() が静的であることは気にしないでください。エラー!それはとても愚かです!
とにかく - これが私が立ち往生している場所です - メソッドでこれを行う必要があります。
taskBoardModel.Name = UserProfile.GetUserProfile().FirstName + " " + UserProfile.GetUserProfile().LastName;
私の単体テストはもちろん、Membership.GetUser() の呼び出しが失敗するため失敗します。エラー!!!
誰にも何か提案がありますか?