gpt4 book ai didi

java - 可以在 JMockit 中模拟用 @Context 注释的字段吗?

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:32 26 4
gpt4 key购买 nike

我在测试的类中有以下字段:

class ClassUnderTest {

@Context
public javax.ws.rs.core.SecurityContext securityContext;

public void someMethod() {
securityContext.getUserPrinciple(); // securityContext is always null here - never mocked
}
}

但是我无法让 JMockit 使用期望或 MockUp 方法来模拟它,在这两种情况下,在测试的类中 securityContext 始终为 null?

@Test
public void usingExpectations() {
new Expectations() {
@Mocked
SecurityContext mockSecurityContext;
@Mocked
Principal mockPrinciple;
{
mockSecurityContext.getUserPrincipal();
result = mockPrinciple;

mockPrinciple.getName();
result = username;
}
};

new ClassUnderTest().someMethod();
}

@Test
public using usingMockUp() {
new MockUp<SecurityContext>() {
@Mock
Principle getUserPrincipal() {
// return something
};
}
new ClassUnderTest().someMethod();
}

最佳答案

您的测试代码没有执行任何操作来设置 securityContext 字段,因此它仍然为空。

不过,JMockit 有这方面的功能。您可以通过调用 Deencapsulation.setField(...) 显式设置该字段,也可以使用 @Tested@Injectable 注释让 JMockit 自动执行此操作。详细信息和示例请查看documentation .

关于java - 可以在 JMockit 中模拟用 @Context 注释的字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24486965/

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