0
保護されたリソースの統合テストを書くので、ログインしてリクエストからトークンを取得し、次のテストでこのトークンを使用する必要があります。スポークテスト - when句からローカル変数への値を代入する
私は以下のようにそれをやってみたかった:
@Autowired
private TestRestTemplate restTemplate
private String token
def 'login'() {
given:
final UserData userData = new UserData("User", "Password")
when:
def response = restTemplate.postForEntity('/login', userData, Object)
// assign token to variable
this.token = response.getHeaders().get("Authorization")
then:
response.getStatusCode() == HttpStatus.OK
response.getHeaders().get("Authorization") != null
}
そして、私は次のテストに割り当てられたトークンを使用していたが、私はNullPointerExceptionが取得:この中
def 'request test'() {
final MultiValueMap<String, String> headers = new LinkedMultiValueMap<>()
headers.add("Authorization", token)
final HttpEntity request = new HttpEntity(headers)
when:
def response = rest.exchange('/test', HttpMethod.GET, request, new ParameterizedTypeReference<String>() {})
then:
response.getStatusCode() == HttpStatus.OK
}
をテストトークンにはnull値があります。なぜ、どのようにしてこの問題を解決できますか?
順番に実行中のテストに頼ったり、それらの間で状態を共有したりしないでください。これらの3行をメソッドに抽出し、各テストでそれを呼び出してトークンを取得するのはなぜですか? –