gpt4 book ai didi

java - Mockito 在调用 getter 时设置字段

转载 作者:行者123 更新时间:2023-12-01 23:26:11 33 4
gpt4 key购买 nike

我正在测试方法,但有一个问题,我的实体有一个为空的字段,但我需要它不为空。我有这个:

class MyClass {

void myMethod() {
Entity entity = new Entity();
String str = entity.getField(); // It's null now
if (str == null) { //always true
//do something
}
}
}

现在在测试中我需要我的字段不为空。
我在测试中尝试执行以下操作:

Entity entity = mock(Entity.class);
when(entity.getField()).thenReturn("text");

但似乎这不起作用。问题是我无法使用PowerMock或重构原始类。
有什么方法可以在 if 语句之前返回文本或设置字段吗?

最佳答案

查看您的代码,您无法将模拟的 Entity 实例注入(inject)到您的方法中。

您必须调整您的 MyClass 以便它接受 Entity 对象,从而允许您传递模拟对象以进行测试。如果没有这个,您就不能指望能够模拟对象。

class MyClass {

private Entity entity;

public MyClass(Entity entity) {
this.entity = entity;
}

void myMethod() {
String str = entity.getField(); // It's null now
if (str == null) { //always true
//do something
}
}
}

如果您不想更改面向公众的构造函数,请考虑添加一个包私有(private)的 setter 方法,该方法可让您调整 Entity 实例。但是您必须将实例存储为字段,以便您可以从测试代码中更改它。

关于java - Mockito 在调用 getter 时设置字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19951898/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com