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

时间:2017-10-16 15:28:35

标签: c# .net unit-testing

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

e

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

我正在尝试的方法(仍未成功)使用填充程序,如here所述。

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

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

1 个答案:

答案 0 :(得分:5)

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

这样您就可以将调用重定向到this.GetType().Assembly的getter并返回预设的程序集列表。