У меня есть следующий тест (значения которого были изменены из-за корпоративной политики), но по какой-то причине Mocha не будет его запускать. Что страннее, если я поменяю test
на test.only
, Мокка его запустит, но - как и следовало ожидать - ни один из моих других тестов. Я добавил console.log
с описанием того, что работает, а что нет. Кто-нибудь видел что-нибудь подобное?
Код:
/*global suite, setup, teardown, test, require, console */
var expect = require('expect.js'),
sinon = require('sinon'),
proxyquire = require('proxyquire');
suite('seven', function () {
'use strict';
var one = {
a: sinon.stub()
};
var two = {
b: sinon.stub()
};
var three = {
c: sinon.stub()
};
var four = proxyquire(
'./four.js',
{
'one.js': one,
'two.js': two
}
);
var five = proxyquire(
'./five.js',
{
'./four.js': four
}
);
var six = proxyquire(
'./six.js',
{
'./five': five
}
);
var seven;
setup(function () {
console.log('does not print');
seven = proxyquire(
'./seven.js',
{
'./three.js': three,
'./six.js': six
}
);
});
suite('d', function () {
console.log('does print');
test('d things', function () {
console.log('also does not print');
var expectedDValue = 'd value';
one.a.callsArgWith(1, {
'dKey': expectedDValue
});
two.b.callsArgWith(1, true);
three.c.returns({
'cKeyOne': 'cValueOne',
'cKeyTwo': {
'subCKey': 'subCValue'
}
});
return seven.d().then(function (dValue) {
expect(dValue).to.be(expectedDValue);
});
});
});
});
Mocha запускается через make
со следующими соответствующими строками:
TEST_TIMEOUT := 5000
MOCHA_REPORTER := dot
MOCHA_UI := tdd
SERVER_PATH := js
MODULE_PATH := $(realpath ./)/node_modules/.bin
MOCHA_COMMAND := $(MODULE_PATH)/mocha
SERVER_TEST_FILES := $(shell find $(SERVER_PATH) -name "*.test.js")
MOCHA_SETUP_FILE := $(shell find $(SERVER_PATH) -name "mochaSetup.js")
test:
-@$(MOCHA_COMMAND) -u $(MOCHA_UI) -t $(TEST_TIMEOUT) -R $(MOCHA_REPORTER) $(MOCHA_SETUP_FILE) $(SERVER_TEST_FILES)
UPDATE
Я обнаружил, что из ~ 1600 тестов только ~ 900 из них проводятся. Моя новость - это просто совпадение. Тестовые файлы читаются - если я console.log
внутри функций suite
, я вижу их напечатанными - но ни функции setup
, ни test
не выполняются. Я подтвердил, что они не выполняются на компьютере коллеги, но выполняются в нашей среде CI.
ОБНОВЛЕНИЕ 2
Кажется, проблема может быть ограничена подсистемой Windows для Linux (WSL) - другой сотрудник, работающий с виртуальной машиной в Windows 7, видит, что все тесты выполнены.