테스트 데이터를 삽입하기 위해 Protractor 테스트를 실행하기 전에 데이터베이스 서버에 POST 요청 (JSON 페이로드 포함)을 만들고 싶습니다. 어떻게하면 가능합니까?각도기 테스트에서 어떻게 POST 요청을 할 수 있습니까?
답변
나는 그것의 요점은 browser.executeAsyncScript
를 통해 브라우저에서 스크립트를 실행하고 거기에 $http service을 주입하는 것입니다 안드레스 D.의 도움으로 그것을 할 수있는 방법을 발견했다. $ http 서비스는 POST 요청을하게됩니다. 다음 예는 어떻게하는지의 커피 스크립트 : 당신은 당신의 데이터베이스를 채우는하려는 경우 그냥 POST 요청을 실행하는 다른 라이브러리를 사용할 수 있습니다
browser.get('http://your-angular-app.com')
browser.executeAsyncScript((callback) ->
$http = angular.injector(["ng"]).get("$http")
$http(
url: "http://yourservice.com"
method: "post"
data: yourData
dataType: "json"
)
.success(->
callback([true])
).error((data, status) ->
callback([false, data, status])
)
)
.then((data) ->
[success, response] = data
if success
console.log("Browser async finished without errors")
else
console.log("Browser async finished with errors", response)
)
각도기 구성의 onPrepare 기능에서 일부 비동기 설정 코드를 실행할 수 있습니다. 각도기에게 요청이 끝날 때까지 기다리라고 명시 적으로 지시해야합니다. 이것은 flow.await()로 할 수 있습니다.
onPrepare: function() {
flow = protractor.promise.controlFlow()
flow.await(setup_data({data: 'test'})).then(function(result) {
console.log(result);
})
}
약속을 반환 할 수 있습니다 준비에 각도기 1.1.0의로
**, 그래서 명시 적으로 해결하기 위해 약속을 기다리는 flow
의 사용은 불필요합니다.
은 참조 : https://github.com/angular/protractor/blob/master/CHANGELOG.md
onPrepare에 익숙하지 않지만 전체 제품군에 대해 한 번 실행됩니까? 테스트마다 설정/해체 방법이 필요합니다. – aknuds1
예, 테스트를 실행하기 전에 한 번 실행됩니다. onPrepare는 당신이 원하는대로 할 것입니다. – rjferguson21
flow.await는'it' 또는'beforeEach' 함수에서도 작동하는 것으로 보입니다. 나는 'onPrepare'에 대한 제한이 있다고 생각하지 않는다. –
.
예를 들어, 당신은 다음처럼 beforeEach
에 superagent를 사용할 수 있습니다
var request = require("superagent");
describe("Something", function() {
beforeEach(function(done) {
request
.post("http://localhost/api/foo")
.send({data : "something"})
.end(done);
});
});
- 1. 각도기 테스트에서 websocket을 호출 할 수 있습니까?
- 2. 각도기 테스트에서 문서 또는 창 개체에 액세스 할 수 있습니까?
- 3. 각도기 테스트에서 C# 코드를 호출 할 수 있습니까?
- 4. PhoneGap에서 POST 요청을 할 수 있습니까?
- 5. 레일 테스트에서 각도기 실행
- 6. 각도기 테스트에서 명령 줄 사용
- 7. 왜 AngularJs로 POST 요청을 할 수 없습니까?
- 8. Rails의 테스트에서 조명기를 어떻게 업데이트 할 수 있습니까?
- 9. POST 파일이 여러 요청을 처리 할 수 있습니까?
- 10. Haskell에서 어떻게 HTTPS 요청을 할 수 있습니까?
- 11. jQuery로 어떻게 동기 요청을 할 수 있습니까?
- 12. ReactJS에서 어떻게 ajax 요청을 할 수 있습니까?
- 13. 어떻게 ASINetworkQueue에서 요청을 제거 할 수 있습니까?
- 14. html 버튼을 사용하여 POST 요청을 수행 할 수 있습니까?
- 15. JavaScript가 모든 도메인에 POST HTTP 요청을 수행 할 수 있습니까?
- 16. rspec을 사용하여 직접 POST 요청을 테스트 할 수 있습니까?
- 17. String을 요구하는 서버에 Visual Basic으로 POST 요청을 할 수 있습니까?
- 18. 각도기 테스트에서 캔버스 요소를 어설 션하는 방법
- 19. 각도기 테스트에서 브라우저 표준 시간대 설정
- 20. 여전히 FireFox가 각도기/셀레늄 테스트에서 작동하지 않습니까?
- 21. 레일스 테스트에서 POST 매개 변수를 어떻게 지정합니까?
- 22. 어떻게 ajaxSend에서 ajax 요청을 중지 할 수 있습니까?
- 23. Sinatra에서 정적 파일로 POST 요청에 어떻게 대답 할 수 있습니까?
- 24. 단위 테스트에서 ALAssetsLibrary를 어떻게 사용할 수 있습니까?
- 25. 예제는 테스트에서 어떻게 실행될 수 있습니까?
- 26. 테스트에서 $ http 요청을 취소하면 $ httpBackend.flush();
- 27. IP로 요청을 안전하게 인증 할 수 있습니까?
- 28. 의료 기기 테스트에서 LabVIEW를 어떻게 검증 할 수 있습니까?
- 29. 객관적인 C 단위 테스트에서 생성자를 어떻게 추가 할 수 있습니까?
- 30. SOAP 서비스 요청을 어떻게 Android에 게시 할 수 있습니까?
이 http://stackoverflow.com/questions/21055960/bare-http-calls-from-protractor-tests/를 참조하십시오 21057106 # 21057106 –
@AndresD 다른 방법이 있습니까? 노드 http 모듈을 사용해도 상관 없지만 Jasmine 테스트에서 비동기 호출을 수행하는 방법을 알아낼 수는 없습니다. – aknuds1