0
我爲受保護資源編寫集成測試,因此我必須登錄,從請求中獲取令牌,並在下一次測試中使用此令牌。Spock測試 - 從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
}
在這測試令牌具有空值。爲什麼以及如何解決這個問題?
您不應該依賴按順序運行的測試,或者在它們之間共享狀態。爲什麼不把這3行提取到一個方法中,並在每個測試中調用它以獲取一個標記? –