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

akn*_*ds1 12 javascript testing rest angularjs protractor

我想在运行Protractor测试之前向数据库服务器发出POST请求(使用JSON有效负载),以便注入测试数据.如果可能的话,我怎么能这样做呢?

Der*_*ler 6

如果您只想填充数据库,则可以使用另一个库来运行POST请求.

例如,你可以在你的喜欢中使用superagentbeforeEach:

var request = require( "superagent" );

describe( "Something", function() {

  beforeEach( function( done ) {
    request
      .post( "http://localhost/api/foo" )
      .send( {data : "something"} )
      .end( done );
  } );

} );
Run Code Online (Sandbox Code Playgroud)


akn*_*ds1 5

在Andres D的帮助下,我找到了一种方法.它的要点是在浏览器中运行脚本browser.executeAsyncScript并在那里注入$ http服务.然后告知$ 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)
)
Run Code Online (Sandbox Code Playgroud)