だからこれは惨めになっています。Microsoft のガベージ メンバーシップ ライブラリのいくつかをテストしようとしていますが、それらはひどいものです。私はMembershipクラスの前にインターフェースを置くことができ、その後ProfileBaseを実装するクラスで問題に遭遇し、そのためのインターフェースを作成することができたので、愚かな静的作成メソッドをモックすることができましたが、どうすればprofileBaseのプロパティをモックすることができますか?これが、その愚かなクラスを使用する唯一の理由です。真剣に、この時代の MicroSoft はコードを修正できないため、おかしな単体テストを作成できます。可哀想。これは私がこれまでに試したことです
mockProfileFactoryService = new Mock<IProfileFactoryService>();
mockProfileFactoryService.Setup(x => x.GetUserProfile(It.IsAny<string>())).Returns(new DummyUserProfile(){FirstName = ""});
これは、ダミークラスがどのように見えるかです
public class DummyUserProfile: UserProfile
{
public new String FirstName { get; set; }
public new String LastName { get; set; }
}
プロパティ FirstName と LastName をそのように非表示にできると思ったのですが、テストが失敗して、実際の UserProfile クラスのプロパティにアクセスしようとしていることがわかります。
誰も私がこれを行う方法を知っていますか? 真剣に - ProfilBase クラスから継承するとき、他の人は何をしていますか?
私もリシェイパーを使用して抽出とインターフェースを試みましたが、それはうまくいくように見えましたが、それを嘲笑してから .Return(profileMock.object) と言おうとすると、変換できず、IUserProfile を UserProfile に変換できないと言って爆発しましたか? 私はARGの前にそれを見たことがありません!!!
つまり、コードを変更してテスト可能にするのは嫌いです。つまり、nullや愚かながらくたをチェックしますが、できればそうしますが、この場合、これについて何をするので何もできませんか?
base["FirstName"]