如何在我的 IBM 云摩卡测试中找到服务器?

How do I find the server on my IBM cloud mocha test?

我可以在云上 运行 进行测试,但它失败了。但是,它在本地有效。我认为这是因为我没有正确的服务器地址。我尝试了 myserver.bluemix.net、localhost:5001 和本地有效的 null。我好像找不到地址。

我的单元测试:

process.env.NODE_ENV = 'test';

var chai = require('chai');
var chaiHttp = require('chai-http');
var app = require('../index');
var cfenv = require('cfenv');


var should = chai.should();
var expect = chai.expect;
chai.use(chaiHttp);


describe('Conversation', function() {

var serviceBaseUrl = '';
if (process.env.test_env == 'cloud') {
serviceBaseUrl
= 'http://' + '127.0.0.1:5001';
}

  it ('should return message', function(done){
  chai.request(app)
  .post(serviceBaseUrl + '/api/v1/conversation')
      .send({input: "test", ConverationId: ""})
      .end(function (err, res) {
        res.status.should.equal(200);
        console.log(res.body);
        done();
      });

  });

});

这是错误:

Server running at http://127.0.0.1:5001
  Conversation
    1) should return message
double callback!


  0 passing (33ms)
  1 failing

  1) Conversation
   should return message:
 Uncaught TypeError: Cannot read property 'status' of undefined
  at test/test-conversation.js:27:12
  at Test.Request.callback (/home/pipeline/79a4adb4-e686-494a-9974-3c5860240fcb/node_modules/superagent/lib/node/index.js:615:12)
  at ClientRequest.<anonymous> (/home/pipeline/79a4adb4-e686-494a-9974-3c5860240fcb/node_modules/superagent/lib/node/index.js:567:10)
  at Socket.socketErrorListener (_http_client.js:309:9)
  at emitErrorNT (net.js:1281:8)
  at _combinedTickCallback (internal/process/next_tick.js:74:11)
  at process._tickCallback (internal/process/next_tick.js:98:9)

如果这是一个单元测试,您应该使用模拟来隔离您的测试环境。问题是您的本地主机将具有与您的应用程序部署到云时不同的基础 url。

考虑使用像 nock 这样的库来模拟您的 api 请求。


如果您and/or想做集成测试,您可以设置基础 url 像这样:

const base = process.env['ROUTE'] || 'http://localhost:3000/route';

(其中 process.env['ROUTE'] 可能类似于 'https://app.mybluemix.net/route'。)