小编lex*_*ica的帖子

.Net Fakes - 当基类是抽象的时,如何填充继承的属性?

我正在尝试编写一个涵盖以下行的单元测试

var fileFullName = fileInfo.FullName;
Run Code Online (Sandbox Code Playgroud)

其中fileInfo是FileInfo的一个实例.

我使用fakes来填充FileInfo对象,但是我无法为FullName属性提供值,因为它是从基类继承的.

对于未继承的Name属性,我可以这样做:

ShimFileInfo.AllInstances.NameGet = info => OriginalFullName;
Run Code Online (Sandbox Code Playgroud)

Microsoft提供的答案是在基类上创建填充程序,在本例中为FileSystemInfo.但如果我试试这个:

ShimFileSystemInfo.AllInstances.FullNameGet = info => OriginalFullName;
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为FileSystemInfo是一个无法创建的抽象类,因此无法进行填充.

在这种特殊情况下,我可以解决它,因为我可以结合DirectoryName和Name属性使其可测试,但似乎很疯狂,我不能只使用我想要的属性,因为它恰好来自基地.

有没有人来解决这个问题并设法解决它?

c# inheritance unit-testing shim microsoft-fakes

8
推荐指数
1
解决办法
4391
查看次数

标签 统计

c# ×1

inheritance ×1

microsoft-fakes ×1

shim ×1

unit-testing ×1