如何从量角器测试中发出 POST 请求?

问题描述:

我想在运行 Protractor 测试之前向数据库服务器发出 POST 请求(带有 JSON 有效负载),在为了注入测试数据.如果可能的话,我该怎么做?

I would like to make a POST request (with JSON payload) to a database server prior to running a Protractor test, in order to inject test data. How can I do this, if at all possible?

在 Andres D 的帮助下,我找到了一种方法.它的要点是通过 browser 在浏览器中运行脚本.executeAsyncScript 并在其中注入 $http 服务.然后告诉 $http 服务发出一个 POST 请求.这是如何完成的示例 CoffeeScript:

I found a way to do it, with the help of Andres D. The gist of it is to run a script in the browser via browser.executeAsyncScript and inject the $http service in there. The $http service is then told to make a POST request. Here's example CoffeeScript of how it's done:

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)
)