gpt4 book ai didi

java - 模拟 HttpHeaders 抛出 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 16:20:54 25 4
gpt4 key购买 nike

我是 Mockito 的新手,我在 TestClass 中模拟 HttpHeaders,但如果我删除 setUp() 方法并模拟 HttpHeaders,它会抛出 NullPointerException,并且我不想在 setup() 方法中编写所有代码,我只是想要 mock HttpHeaders。有人可以建议我如何解决这个问题

测试类

    @RunWith(SpringJUnit4ClassRunner.class)
public class ValidateAndQuotetValidatorTest {

@InjectMocks
private ValidateAndQuotetValidator validator;

@Mock
private HttpHeaders headers;

@Before
public void setUp() throws Exception {

List<String> requestHeader = new ArrayList<String>();
MultivaluedMap<String, String> requestHeaders = new MultivaluedHashMap<> ();
headers = new HttpHeaders() {

@Override
public MultivaluedMap<String, String> getRequestHeaders() {
// TODO Auto-generated method stub
return requestHeaders;
}

@Override
public List<String> getRequestHeader(String name) {
// TODO Auto-generated method stub
return requestHeader;
}

@Override
public MediaType getMediaType() {
// TODO Auto-generated method stub
return null;
}

@Override
public int getLength() {
// TODO Auto-generated method stub
return 0;
}

@Override
public Locale getLanguage() {
// TODO Auto-generated method stub
return null;
}

@Override
public String getHeaderString(String name) {
// TODO Auto-generated method stub
return null;
}

@Override
public Date getDate() {
// TODO Auto-generated method stub
return null;
}

@Override
public Map<String, Cookie> getCookies() {
// TODO Auto-generated method stub
return null;
}

@Override
public List<MediaType> getAcceptableMediaTypes() {
// TODO Auto-generated method stub
return null;
}

@Override
public List<Locale> getAcceptableLanguages() {
// TODO Auto-generated method stub
return null;
}
};
}


@Test(expected = ServiceException.class)
public void test_validateRequest_12() throws Exception {
headers.getRequestHeaders().putSingle(ExternalPartnerUtil.PARTNER_NAME, "");
headers.getRequestHeaders().putSingle(ExternalPartnerUtil.AGENT_ID, "asd");
validator.validateHeaders(headers);
}
}

异常

java.lang.Exception: Unexpected exception, expected<com.sampl.demo.exception.ServiceException> but was<java.lang.NullPointerException>

最佳答案

第一个可能的错误是没有使用@RunWith(MockitoJUnitRunner.class)运行器。

看看这里的例子: https://www.springboottutorial.com/spring-boot-unit-testing-and-mocking-with-mockito-and-junit

第二个是在 validator 内部可以根据 header 方法调用的结果调用某些方法。在这种情况下,您需要使用 when() 方法。例如:

when(headers.getHeader("accept")).thenReturn("application/json");

关于java - 模拟 HttpHeaders 抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62284747/

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