我想用Mock for Spring Boot制作一个测试用例,但我无法连接到授权服务器:
我的控制器:
public class AuthController {
@Autowired
private AuthService authService;
@Autowired
private TokenStore tokenStore;
@PostMapping(value = Constants.LOGIN_URL,
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
public Auth login(@RequestBody Auth login, OAuth2Authentication auth) throws ApiException {
Auth result = authService.auth(login);
final OAuth2AuthenticationDetails details = (OAuth2AuthenticationDetails) auth.getDetails();
result.setAccessToken(details.getTokenValue());
final OAuth2AccessToken accessToken = tokenStore.readAccessToken(details.getTokenValue());
result.setTtl(accessToken.getExpiresIn());
return result;
}
这是我的测试,但取一个错误NullPointer,可能是因为在方法中有一个参数(OAuth2Authentication auth),我不知道如何将其放入测试中:
@Before
public void setup() {
mockMvc = MockMvcBuilders.standaloneSetup(controller)
.apply(documentationConfiguration(this.jUnitRestDocumentation))
.setCustomArgumentResolvers(new AuthenticationPrincipalArgumentResolver()).build();
}
@Test
public void getLogin() throws Exception, ApiException {
Auth authMock = Mockito.mock(Auth.class);
Mockito.when(service.auth(Mockito.any(Auth.class))).thenReturn(authMock);
String requestBody = "{" +
"\"username\":" + "\"YENNIFER\"" +
",\"nid\":" + "\"13991676\"" +
",\"password\":" + "\"password\"" +
",\"email\":" + "\"cervecera.artesanal@gmail.com\"" +
"}";
mockMvc.perform(MockMvcRequestBuilders.post("/api/v1/auth/login")
.contentType(MediaType.APPLICATION_JSON)
.content(requestBody))
.andExpect(status().isOk());
}
您可以简单地模拟AuthService
并将该模拟注入控制器,例如:
@RunWith(SpringJUnit4ClassRunner.class)
public class AuthControllerTest {
@Mock
private AuthService authService;
@InjectMocks
private AuthController controller;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testAuth() {
Auth authMock = Mockito.mock(Auth.class);
Mockito.when(authService.auth(Mockito.any(Auth.class)).thenReturn(auth));
}
}
我有一个示例方法(我需要编写测试用例)如下所示, 我想模拟getConfig方法并返回一个特定的字符串值。getConfig是Kotlin对象中方法,如下所示, 下面是我尝试的测试 我没有得到任何错误,但是getConfig方法没有被嘲笑。执行实际的实现。我也试过使用Powermockito。请帮帮我
考虑为现有Azure Cosmos DB帐户启用地理冗余?但是如何模拟故障转移来进行测试呢 启用地理冗余后,考虑数据一致性有多重要? 一般性建议是什么 考虑地理冗余或数据一致性所需的任何代码更改?我们使用的是cosmosdb-sqlapi。
问题内容: 我正在尝试为一些依赖WifiManager和返回的ScanResults的类实现一些单元测试。我想做的是能够控制我收到的ScanResults,以测试各种不同的条件。 不幸的是,对我来说,成功模拟WifiManager非常困难(尽管我想我可以在MockWifiManager中传递其构造函数null引用)。这只是我的第一个问题,因为一旦我有一个MockWifiManager可以玩(如果它
问题内容: 如何模拟使用PowerMock进行测试的专用方法?我有一个类,我想使用一个调用私有方法的公共方法进行测试。我想假设私有方法可以正常工作。例如,我想要类似的东西。我发现有使用PowerMock的解决方案,但该解决方案对我不起作用。怎么做?有人有这个问题吗? 问题答案: 我在这里没有问题。使用Mockito API的以下代码,我做到了: 这是JUnit测试:
问题内容: 嗨,我真的希望您能为我提供帮助,我感觉我已经把头发拉了好几天了。 我正在尝试为方法A编写单元测试。方法A调用静态方法B。我想模拟静态方法B。 我知道以前已经有人问过这个问题,但是我觉得Android从那时起已经成熟,并且必须有一种方法可以执行如此简单的任务,而无需重写我要测试的方法。 这是一个示例,首先是我要测试的方法: 接下来,我要模拟的静态方法: 在其他语言中,这是如此简单,但我无
Spock对存根和模拟做了很强的区分。当要更改的内容从被测试类使用的类返回时,请使用存根,这样您就可以测试if语句的另一个分支。使用mock,当您不关心测试中的类返回什么时,只需调用另一个类的另一个方法,并且您希望确保调用了该方法。很整洁。然而,假设您有一个具有流利API的构建器,它使人们。您希望测试调用此生成器的方法。 所以最初,我想只是模拟构建器,然后myMethod()的单元测试应该检查具有