如何在 Mockito 中模拟全局变量

Posted

技术标签:

【中文标题】如何在 Mockito 中模拟全局变量【英文标题】:how to mock global variable in Mockito 【发布时间】:2016-04-26 11:22:49 【问题描述】:

我有一个全局变量global

我的方法有一行:

global.getListOfObjects()

我正在尝试编写单元测试并在上述行中不断获得 NPE。 如何模拟全局变量?

我正在使用 Mockito 和 PowerMock。

【问题讨论】:

全局变量?你能说得更具体点吗? 项目中任何文件都可以使用的对象。 你有那个对象的代码吗?和测试?因为没有人知道对象是 Singleton,还是只是静态方法,还是别的什么。 你尝试过什么但失败了?为什么在您的场景中模拟 global 失败了?你得到哪个错误? 【参考方案1】:

使用必须有与下面相同类的mock对象

@InjectMock

ABC类 abc;

现在您可以在需要该值的测试用例中将全局变量设置为 abc.global = value。

【讨论】:

【参考方案2】:

如果我正确理解您的问题,这些是您可以做的事情:

    在源类中使用该属性的 setter 方法。 yourSourceClass.setGlobal(somethingYouNeed);

    如果这是一个公共成员,您可以从您的测试类中分配该公共成员值。喜欢: yourSourceClass.global = <somethingYouNeed>;

谢谢。

【讨论】:

以上是关于如何在 Mockito 中模拟全局变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JEST 测试中模拟全局 Vue.js 变量

如何在运行时确定共享库中全局变量的地址范围?

在 Jest 中模拟全局变量

如何将许多变量和函数从全局环境导出到 foreach 循环?

C#中在哪里声明全局变量啊,具体位置在哪儿,我是初学者。。。

模拟全局变量