2016-12-06 1 views
0

을 요청단일 간부, 나는 현재 다른 후 하나라고 웹 소켓 요청의 목록을 내 개틀링 시뮬레이션에서

.exec(ws("1").sendText("1").check("...")) 
.exec(ws("2").sendText("2").check("...")) 
.exec(ws("3").sendText("3").check("...")) 

그 문제는 검사가 서로 다른 시간에 그들에 도착한다는 것입니다 테스트 실패의 원인이됩니다. wsAwait을 통한 차단 체크를 사용하는 것은 요구 사항 때문에 불가능합니다.

내가 대신 갖고 싶습니다는 체크가 모든 응답을 수집합니다. 이상적으로 다음과 같이 보일 수 있습니다.

.exec(
    ws("1").sendText("1"), 
    ws("2").sendText("2"), 
    ws("3").sendText("3") 
).check(...) 

이것은 현재 불가능합니다. 내가 이것을 달성 할 수있는 방법이 있습니까?

답변

0

Assertions을 살펴 보시기 바랍니다. 이렇게하면 시뮬레이션이 끝나면 어설 션을 할 수 있습니다. 그래서 각 시나리오는 완벽하게 실행되고 원하는 기준에 따라 실패 할 수 있습니다.

또는 exec 호출을 resources으로 정의하고 그 뒤에 검사가 올 수 있습니다.

.exec(ws("1").sendText("1").resources(
     ws("2").sendText("2"), 
     ws("3").sendText("3") 
    ).check(...)) 
+0

수십 개의 작은 시뮬레이션을 만들고 싶지 않기 때문에 어설 션을 사용하고 싶지 않습니다. 이러한 WS 요청은 모두 단일 WS 연결 내에서 보내고 읽어야합니다. 또한'http'와는 달리'ws '와 같이'resources'를 사용할 수 없습니다. 대답은 컴파일되지 않습니다. – xeroqu

+0

블로킹 체크 인'wsAwait'을 사용했지만 non-blocking 체크 ('wsListen')를 사용할 수 없다는 것을 언급했습니다. 좀 더 자세하게 들어갈 수 있습니까? '기대하기 '기능도 마음에 들지만 나는 그 것에 대한 경험이 없다. – Questioning

+0

'wsAwait'은 블로킹 연산이므로'check '가 반환 될 때까지 다음 exec()가 실행되는 것을 허용하지 않습니다. 시나리오에서는 우리가 이것을 가지고 있지 않습니다. 사용자는 요청을 보내고 비동기식으로 서버에서 응답을 다시받습니다. 한 가지 해결 방법은 내 질문에'wsListen'을 사용하고'within'을 매우 오랜 시간 동안 설정하는 것입니다. 단지'check'가 반환되는지 확인하는 것입니다. 나는 더 우아한 해결책을 찾고있다. – xeroqu

관련 문제