gpt4 book ai didi

java - 如果模拟对象在实现类中设置为 null,则失去模拟

转载 作者:行者123 更新时间:2023-12-02 04:15:25 24 4
gpt4 key购买 nike

我想模拟一个在循环中工作的对象。要以这样的方式测试代码,即对象(我想要模拟的)在每次迭代时都会重新初始化。因此,当我进行模拟时,我可以看到模拟对象第一次存在,但在重新初始化后丢失。

loop {
TripPlan tripPlan = solver.make(something);
solver= new ArkSolver();
}

solver是我要模拟的对象。

测试代码:

public class TestArkTripPlanManager { 
@Mock Solver solver;
PlanManager planManager;
@Test
public void testExecute_Two_Ark() throws RoutingServiceException, IOException, VRPSolverException {
when(solver.make(case1).thenReturn(expectedcase1);
when(solver.make(case2).thenReturn(expectedcase2);
planManager.setsolver(solver);
planManager.execute();
}

最佳答案

您可以更改获取求解器的方式。

solver = acquireSolver();

ArkSolver acquireSolver() {
return new ArkSolver();
}

然后,通过测试,您可以控制通过此方法提供哪种求解器。

@Before
public void setUp() throws Exception {
underTest = new MyClass() {
@Override
public ArkSolver acquireSolver() {
return <your mock here>;
}
};
}

我不知道为什么你每次都想创建一个新的解算器(也许在 make 方法之后仍然保留一些内部状态),但你可以尝试将解算器重置为其初始状态,以便你可以再次使用它。

关于java - 如果模拟对象在实现类中设置为 null,则失去模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56662862/

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