Мокко пропускает ряд тестов - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть следующий тест (значения которого были изменены из-за корпоративной политики), но по какой-то причине 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, видит, что все тесты выполнены.

1 Ответ

0 голосов
/ 08 ноября 2018

Оказывается, исключение низкого уровня, возникшее в другом тесте, заставило Mocha полностью прекратить выполнение тестов. В частности, один из моих тестов пытался выполнить файловую операцию, которую файловая система WSL не поддерживает, но вместо того, чтобы дать мне какое-либо указание на то, что происходило, Мокко просто ушел.

Это не очень хороший процесс, но я советую всем, кто сталкивается с этой проблемой, найти последний тестовый прогон перед выходом Mocha и вручную проверить ошибки низкого уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...