C# - 如何模拟this.GetType().程序集

use*_*689 3 .net c# unit-testing

在我正在处理的代码中,我被迫测试一个有这样调用的方法:

this.GetType().Assembly.GetTypes().Where(x => ...);
Run Code Online (Sandbox Code Playgroud)

我想模拟这个调用,以便在调用时从中检索我选择的程序集this.GetType().Assembly.
在程序集中将有假类型,我将用于我的断言

我想(仍然没有成功)的方法是使用垫片,如所描述这里.

有没有办法实现我的目标?

最后,请注意我知道这不是进行单元测试的正确方法.通常,我测试的类是使用依赖项制作的,我可以轻松地模拟.这是一个例外,因为这是一个解决方案范围的Cunsomer驱动的合同的实现,我不允许更改它.

Iqo*_*qon 5

如果您无法更改测试中的代码,则可以使用TypeMockJustMock等框架.这些框架使用探查器钩子,因此可以重定向每个函数调用,甚至调用第三方库.

这将允许您将调用重定向到getter this.GetType().Assembly并返回预设的程序集列表.