如何在我的 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'
。)
我可以在云上 运行 进行测试,但它失败了。但是,它在本地有效。我认为这是因为我没有正确的服务器地址。我尝试了 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'
。)