Mocha 的 before() 函数在 CircleCI 中使用时失败

Mocha's before() function fails when used within CircleCI

我正在尝试使用 Mocha 在 CircleCI 上测试我的 JS 代码,但在测试开始时出现以下错误:

Sample test suite
  1) "before all" hook: applyFixture

0 passing (77ms)
1 failing

1) Sample test suite "before all" hook: applyFixture:
 StatusCodeError: 404 - {"message":"Not Found"}
  at _stream_readable.js:943:16

sample_test.js 文件:

describe('Sample test suite', function() {

  before(function applyFixture() {
    var options = {
        uri: 'http://localhost:8000/sampleRoute',
        method: 'POST',
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        form: {dataset: 'test_dataset'},
        resolveWithFullResponse: true
    };

    return rp(options)
        .then(function(response) {
            if (response.statusCode === 200) {
                console.log('ready for testing!');
            } else {
                throw new Error('failed to load');
            }
        });
});

以下代码在本地运行良好。如果我将 before 块中的代码包含到第一个测试中,它也将适用于 CircleCI。 localhost:8000/sampleRoute 也可在测试开始前使用。

不确定如何解决此问题...

然后问题出在请求的 header 上。我必须在其中指定身份验证令牌才能正确执行 POST 请求。这与CircleCI无关。

下面是有效的 options object:

var options = {
    uri: 'http://localhost:8000/sampleRoute',
    method: 'POST',
    headers: {
        authorization: 'authorizationToken'
    },
    form: {dataset: 'test_dataset'},
    resolveWithFullResponse: true
};