2017-10-16 144 views
3

在我工作的代码,我被迫要测试一个方法,其中有这样一个电话:C# - 如何嘲笑this.GetType()大会

this.GetType().Assembly.GetTypes().Where(x => ...); 

我想来嘲笑这个电话,以便在拨打电话时我的选择汇编从this.GetType().Assembly中检索。
在组装还会有假动作类型,我会用我的断言

的方法我试图(仍然没有成功)使用垫片,如所描述here

有没有办法达到我的目标?

最后,请注意,我知道这不是进行单元测试的正确方法。通常我测试的类都是使用依赖关系创建的,我可以轻松地进行模拟。这是一个例外,因为这是Cunsomer-Driven Contracts的解决方案范围的实现,我不允许对其进行更改。

+0

您是否有能力重构该代码? – Nkosi

+0

@Nkosi否:(如果我是,我已经做到了:) – user449689

回答

5

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

这将允许您将呼叫重定向到this.GetType().Assembly的获取方并返回预设的程序集列表。