4

Zombie.js を使用して node.js コードをテストしています。POST メソッドにある次の API があります。

/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 part) に入ります。これは、API が post メソッドにあるためだと思います。

PS: モバイル用のバックエンドを開発しているため、ボタンのクリック時にクエリを実行するためのフォームを作成していません。

POST メソッドを使用して API を実行する方法に関するヘルプをいただければ幸いです。

4

1 に答える 1

0

Zombie は、実際の Web ページと対話するためのものであり、投稿リクエストの場合は実際のフォームです。

テストのために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()
    })
  })
})

上記のコード例では、 モジュールrequestshouldモジュールが必要です。

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