所以这变得很痛苦。我正在尝试测试一些 Microsoft 的垃圾成员库,它们太糟糕了。我设法在 Membership 类前面放置了一个接口,然后在实现 ProfileBase 的类中遇到了问题,我设法为此创建了一个接口,因此可以模拟愚蠢的静态 create 方法,但是如何模拟 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 类继承时,他们在做什么?
我还尝试使用 reshaper 进行提取和接口,这似乎可行,但是当我模拟它然后尝试说 .Return(profileMock.object) 时,它爆炸说它无法将 IUserProfile 转换为 UserProfile?在ARG之前我从未见过!
我的意思是-我讨厌更改我的代码以使其可测试,即检查空值或类似的愚蠢废话,但如果可以的话,我会这样做,在这种情况下,您无能为力,因为您对此做了什么?
base["FirstName"]