4

我正在使用 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(其他部分)。我想这是因为我的 API 在 post 方法中。

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

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

4

1 回答 1

0

Zombie 更多地用于与实际网页交互,并且在发布请求的情况下是实际表单。

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

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

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

npm install --save-dev request should
于 2013-06-01T15:39:13.607 回答