0

我有一些这样的代码:

class FooBar {
    private String stateFoo;

    public FooBar(String stateFoo){
        this.stateFoo = stateFoo;
    }        

    public void foo() {
        FooInst f = FooInstFactory.createSomeFooInst(AnotherStaticFooConfig.getSomePath);
        f.justCountMe();
    }
}

我的目标是确保f.justCountMe()只执行一次。我知道如何用 mockito 来做这件事。我不知道如何将模拟版本FooInst注入foo方法中?这样我就可以计算调用?

甚至有可能这样做吗?

4

2 回答 2

2

您需要使用 powermockito 和模拟静态方法。在此处查看说明如何执行此操作

PowerMockito 模拟单个静态方法并返回对象

于 2015-04-10T06:30:45.617 回答
1

如果可能的话; 我建议避免使用对静态字段进行调和的模拟库(以 PowerMock/Mockito 的方式)——因为它通常会带来不希望的副作用(例如,当发生静态模拟时,许多“覆盖”工具会产生无效的结果)。

所以我的建议是:重新设计你的测试类。而不是从静态工厂获取 f;为工厂或 f 提供构造函数;然后就可以mock对应的对象了;无需求助于强大但危险的“Powerxyz”东西。

于 2015-04-10T06:40:05.743 回答