Continuous integration 如何在IBMCloudMocha测试中找到服务器?
我可以让测试在云上运行,但它失败了。然而,它在本地起作用。我想这是因为我没有正确的服务器地址。我尝试了myserver.bluemix.net、localhost:5001和在本地工作的null。我好像找不到地址了 我的单元测试:Continuous integration 如何在IBMCloudMocha测试中找到服务器?,continuous-integration,mocha.js,ibm-cloud,chai,Continuous Integration,Mocha.js,Ibm Cloud,Chai,我可以让测试在云上运行,但它失败了。然而,它在本地起作用。我想这是因为我没有正确的服务器地址。我尝试了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 cf
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)
服务器运行于http://127.0.0.1:5001
会话
1) 应该返回消息
双重回拨!
0通过(33毫秒)
1失败
1) 谈话
应返回消息:
未捕获的TypeError:无法读取未定义的属性“status”
在test/testconversation.js:27:12
在Test.Request.callback(/home/pipeline/79a4adb4-e686-494a-9974-3c5860240fcb/node_modules/superagent/lib/node/index.js:615:12)
在ClientRequest。(/home/pipeline/79a4adb4-e686-494a-9974-3c5860240fcb/node_modules/superagent/lib/node/index.js:567:10)
位于Socket.socketErrorListener(_http_client.js:309:9)
在emitErrorNT(net.js:1281:8)
at _combinedTickCallback(内部/流程/下一步_tick.js:74:11)
在进程中。_tick回调(内部/process/next_tick.js:98:9)
如果这是一个单元测试,您应该使用mock来隔离您的测试环境。问题是,您的本地主机的基本url将与您的应用部署到云中时不同
考虑使用类似于模拟api请求的库
如果您正在进行和/或希望进行集成测试,可以使用以下内容设置基本url:
const base = process.env['ROUTE'] || 'http://localhost:3000/route';
(其中,process.env['ROUTE']
可能类似于'https://app.mybluemix.net/route“
)