Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 摩卡跳过了一些测试_Javascript_Unit Testing_Mocha.js - Fatal编程技术网

Javascript 摩卡跳过了一些测试

Javascript 摩卡跳过了一些测试,javascript,unit-testing,mocha.js,Javascript,Unit Testing,Mocha.js,我有以下测试(其值因公司政策而改变),但无论出于何种原因,摩卡都不会运行它。更奇怪的是,如果我将test更改为test。只有,摩卡才会运行它,但正如人们所预料的那样,我的其他测试都不会运行。我添加了一些console.logs来描述什么运行了,什么没有运行。有人见过这样的东西吗 守则: /*global suite, setup, teardown, test, require, console */ var expect = require('expect.js'), sinon =

我有以下测试(其值因公司政策而改变),但无论出于何种原因,摩卡都不会运行它。更奇怪的是,如果我将
test
更改为
test。只有
,摩卡才会运行它,但正如人们所预料的那样,我的其他测试都不会运行。我添加了一些
console.log
s来描述什么运行了,什么没有运行。有人见过这样的东西吗

守则:

/*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
与以下相关线路运行:

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
已打印-但既没有执行
设置
也没有执行
测试
功能。我确认它们也没有在同事的机器上执行,但是它们正在我们的CI环境中执行

更新2


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

这导致另一个测试中出现的低级异常导致Mocha完全停止运行测试。具体地说,我的一个测试是尝试执行WSL的文件系统不支持的文件操作,而不是告诉我发生了什么,Mocha刚刚退出


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

您发布的代码实际上运行了测试,因此我认为问题出在一些您没有发布的代码中。而且,可能相关。您使用的是哪个版本的mocha?那么问题是否出在运行的代码中?我不确定还要发布什么代码,因为这是文件的全部内容,没有专有名称和值。摩卡的版本是1.21.4,我知道它确实很旧了,但我不允许在没有公司许可的情况下升级任何东西。老实说,我不确定。我将您的代码复制到一个文件中,安装了所有依赖项(包括mocha@1.21.4),为您所需的模块创建了空白JS文件,并且运行良好:也许可以共享您用来运行mocha的命令?用运行测试的Makefile片段编辑了我的问题。