摩卡咖啡跳过许多测试

时间:2018-11-06 20:31:34

标签: javascript unit-testing mocha

我进行了以下测试(由于公司政策,其值已更改),但是出于任何原因,Mocha都不会运行它。奇怪的是,如果我将test更改为test.only,Mocha会运行它,但是-正如人们期望的那样-我没有其他测试。我添加了一些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);
            });
        });
    });
});

正在通过make使用以下相关行来运行Mocha:

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)

更新

我发现在大约1600个测试中,只有大约900个正在运行。我的新矿纯粹是巧合。正在读取测试文件-如果我在console.log函数中suite看到了打印文件,但是setuptest函数都没有执行。我确认他们也没有在同事的机器上执行,但是正在我们的CI环境中执行。

更新2

问题似乎仅限于Linux的Windows子系统(WSL)-在Windows 7上运行VM的另一位同事看到所有测试都在运行。

1 个答案:

答案 0 :(得分:0)

这变成了另一个测试中引发的低级异常,导致Mocha完全停止运行测试。具体来说,我的测试之一是尝试执行WSL文件系统不支持的文件操作,但没有给我任何指示,表明正在退出的Mocha只是退出了。

这不是一个很好的过程,但是我对其他有此问题的人的建议是找到退出Mocha之前的最后一次测试,并手动检查低级错误。