如何模拟SUT创建的对象

时间:2015-09-21 16:34:23

标签: unit-testing mocking

假设我的SUT是一个BubbleMachine,它会创建一些内部使用的Bubble对象实例。但是,我希望它能用我的MockBubble代替..我该怎么办?

解决方案:

  1. 使用我可以传递给BubbleMachine的中间类BubbleFactory。这样我就可以给它一个MockBubbleFactory。

  2. 当我使用允许它的lang时,在BubbleMachine上设置一些字符串,告诉它为哪个类实例化它的Bubble对象。例如。 $ bubbleMachine-> setBubbleClass('路径/到/ MockBubble.class&#39)

  3. 在BubbleMachine上有一个setBubbleObject(..)类型的函数,我传递了我的MockBubble。然后,BubbleMachine只是在每次想要泡泡时回收该对象实例。

  4. 其中任何一个都适用于我当前的问题,但我怀疑他们可能会让一些单元测试专业人​​员感到有些不舒服。

    由于

1 个答案:

答案 0 :(得分:0)

理想情况下,如果您真的觉得需要模拟SUT创建的对象,那么请使用为您执行此操作的模拟工具。我认为这是最干净的解决方案,因为它不需要SUT中的任何额外复杂性(例如工厂,设置器等)。

相关问题