gpt4 book ai didi

java - EasyMock + PowerMock : How to mock field?

转载 作者:太空宇宙 更新时间:2023-11-04 15:07:13 25 4
gpt4 key购买 nike

让我们看一下这段代码:

    public class A {

public void doSmth() { // pay attention - void method
// impl
}
}

public class B {
private A a_instance; // null

public void doSmthElse() {
a_instance.doSmth(); // NPE here without mock
// also do smth. else
}
}

现在,我有 B b = new B(); 并且我想测试 b.doSmthElse() ,但我需要为 创建一个模拟>a_instance 对象之前,否则我会得到 NullPointerException !我怎样才能用 EasyMock 或 PowerMock 实现这一点???

最佳答案

@Test
public void testDoSomething()
{
// setup: sut
B b = new B();
A mockA = EasyMock.createMock(A.class);
b.setA_instance(mockA); // If you have a setter

// setup: expectations
mockA.doSmth();

// exercise
EasyMock.replay(mockA);
b.doSmthElse();

// verify
EasyMock.verify(mockA);
}

@Test
public void testDoSomething_setUsingReflection()
{
// setup: sut
B b = new B();
A mockA = EasyMock.createMock(A.class);
// Set the collaborator using a Spring reflection utility
ReflectionTestUtils.setField(b, "a_instance", mockA);

// setup: expectations
mockA.doSmth();

// exercise
EasyMock.replay(mockA);
b.doSmthElse();

// verify
EasyMock.verify(mockA);
}

关于java - EasyMock + PowerMock : How to mock field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21829233/

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