我想在運行Protractor測試之前向數據庫服務器發出POST請求(使用JSON負載),以便注入測試數據。如果可能,我該如何做到這一點?如何從量角器測試中發出POST請求?
回答
我發現了一個辦法做到這一點,與安德烈D的幫助,它的要點是通過browser.executeAsyncScript
運行在瀏覽器的腳本,並在那裏注射$http service。 $ http服務然後被告知發出POST請求。下面是CoffeeScript如何完成的示例:
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()來完成,這與promise有很好的結合。
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'沒有限制。 –
如果您只想填充數據庫,則可以使用另一個庫運行POST請求。
例如,你可以在你beforeEach
使用superagent像這樣:
var request = require("superagent");
describe("Something", function() {
beforeEach(function(done) {
request
.post("http://localhost/api/foo")
.send({data : "something"})
.end(done);
});
});
- 1. 測試POST請求
- 2. MockMvc測試POST請求
- 3. 測試:unsatistifed POST請求
- 4. wireload/Ratatosk:如何發出POST請求?
- 5. 如何使用gorequest發出POST請求
- 6. 在REST中測試POST請求
- 7. 無法發出POST請求
- 8. ASIFormDataRequest POST請求發出
- 9. 如何發送POST請求?
- 10. 如何測量Python請求的服務器響應時間POST請求?
- 11. 如何使用Python請求發出POST請求
- 12. 如何使用量角器發送POST
- 13. 發出http請求的測試方法
- 14. 爲什麼多個GET請求失敗量角器測試?
- 15. 離子量角器測試,使得GET請求
- 16. 從POST發回請求
- 17. 如何在WebStorm中調試角度量角器測試
- 18. 如何測試jersey2請求過濾器?
- 19. 如何在python中發送post請求?
- 20. 如何在RestSharp中發送POST請求?
- 21. 如何在ruby和minitest中測試Net :: HTTP :: Post請求
- 22. 如何測試在Django中使用post請求的視圖?
- 23. 如何在Elixir Plug測試中設置POST請求的主體?
- 24. 如何在iOS的量角器測試中發送ENTER鍵?
- 25. 發送從Python中的HTTP POST請求(試圖從PHP轉換)
- 26. Java Junit測試HTTP POST請求
- 27. Rails的5測試POST請求
- 28. 春3.2 MVC測試POST請求
- 29. 量角器:如何測試window.print()
- 30. 量角器如何測試select2
見 http://stackoverflow.com/questions/21055960/bare-http-calls-from-protractor-tests/ 21057106#21057106 –
@AndresD有沒有別的辦法?我不介意使用Node http模塊,但無法弄清楚如何從Jasmine測試中進行異步調用。 – aknuds1