当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 通过Zombie.js浏览器使用POST方法调用API

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在使用Zombie.js测试我的node.js代码.我有以下api,这是在POST方法: /api/names 并在我的test / person.js文件中跟随代码: it('Test Retreiving Names Via Browser', function(done){ this.timeout(10000); var url =
我正在使用Zombie.js测试我的node.js代码.我有以下api,这是在POST方法:

/api/names

并在我的test / person.js文件中跟随代码:

it('Test Retreiving Names Via Browser', function(done){
    this.timeout(10000);
    var url = host + "/api/names";
    var browser = new zombie.Browser();
    browser.visit(url, function(err, _browser, status){
       if(browser.error)
       {
           console.log("Invalid url!!! " + url);
       }
       else
       {
           console.log("Valid url!!!" + ". Status " + status);
       }
       done();
    });
});

现在,当我从终端执行命令mocha时,它进入了browser.error状态.但是,如果我将API设置为get方法,它将按预期工作并进入Valid Url(else部分).我想这是因为在post方法中使用了我的API.

PS:我没有创建任何表单来执行按钮点击查询,因为我正在为移动设备开发后端.

任何有关如何使用POST方法执行API的帮助将不胜感激.

Zombie更多地用于与实际网页交互,并且在帖子请求实际表单的情况下.

对于您的测试,请使用request模块并自行手动制作发布请求

var request = require('request')
var should = require('should')
describe('URL names', function () {
  it('Should give error on invalid url', function(done) {
    // assume the following url is invalid
    var url = 'http://localhost:5000/api/names'
    var opts = {
      url: url,
      method: 'post'
    }
    request(opts, function (err, res, body) {
      // you will need to customize the assertions below based on your server

      // if server returns an actual error
      should.exist(err)
      // maybe you want to check the status code
      res.statusCode.should.eql(404, 'wrong status code returned from server')
      done()
    })
  })

  it('Should not give error on valid url', function(done) {
    // assume the following url is valid
    var url = 'http://localhost:5000/api/foo'
    var opts = {
      url: url,
      method: 'post'
    }
    request(opts, function (err, res, body) {
      // you will need to customize the assertions below based on your server

      // if server returns an actual error
      should.not.exist(err)
      // maybe you want to check the status code
      res.statusCode.should.eql(200, 'wrong status code returned from server')
      done()
    })
  })
})

对于上面的示例代码,您将需要请求和模块

npm install --save-dev request should
网友评论