【问题标题】:nodejs mocha suite is not defined errornodejs mocha套件未定义错误
【发布时间】:2012-03-20 21:28:54
【问题描述】:

我正在尝试使用 mocha 运行一些测试,但似乎无法克服这个错误。

E:\tdd\nodejs\cart>mocha cart.test.js

node.js:201
        throw e; // process.nextTick error, or 'err
              ^
ReferenceError: suite is not defined
    at Object.<anonymous> (E:\tdd\nodejs\cart\cart.test.js:5:1
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at C:\Users\lex\AppData\Roaming\npm\node_module
    at Array.forEach (native)
    at load (C:\Users\lex\AppData\Roaming\npm\node_
9)
    at Object.<anonymous> (C:\Users\lex\AppData\Roa
in\_mocha:237:1)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)
    at EventEmitter._tickCallback (node.js:192:40)

从调用堆栈中我可以看出问题出在cart.test.js:5:1。 知道是什么原因造成的吗?

谢谢

cart.js

var GetTotalSum = function (input) {
    var total = 0,
        differentTitles = 0,
        discountMap = [0, 1, 0.95, 0.9, 0.8, 0.75],
        BOOK_PRICE = 8;

    for (var i in input) {
        total += input[i] * BOOK_PRICE;
        if (input[i] > 0) {
            differentTitles++;
        }
    }

    if (differentTitles > 1) {
        total = total * discountMap[differentTitles];
    }

    return total;
}


module.exports.GetTotalSum = GetTotalSum;

cart.test.js

var assert = require('assert'),
    cart = require('./cart.js');


suite('cart', function () {
    test('buy one book', function () {
        // Arrange
        var input = [1, 0, 0, 0, 0],
            expected = 8;

        // Act
        var actual = cart.GetTotalSum(input);

        // Assert
        assert.equal(actual, expected);     
    });
});

【问题讨论】:

    标签: javascript node.js tdd mocha.js


    【解决方案1】:

    你需要告诉 Mocha 使用 TDD 接口,而不是默认的 BDD 接口:

    mocha --ui tdd card.test.js
    

    【讨论】:

    • 谢谢。工作正常。将 tdd 接口指定为默认值的任何方式?
    • 你将如何动态地做到这一点?我在每次保存时都运行测试,它是通过 gulp 设置的。我正在运行 BDD 和 TDD 测试
    【解决方案2】:

    您可以通过在 package.json

    中指定 mocha -u tdd 来做同样的事情
    "scripts": {
    "start" : "node server",      
    "test": "mocha -u tdd" 
     }
    

    【讨论】:

      【解决方案3】:

      您还可以在项目中包含一个 Makefile 并像这样指定 TDD:

      test:
          @./node_modules/.bin/mocha -u tdd
      
      .PHONY: test
      

      帽子提示:DailyJS

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-25
        • 2021-06-25
        • 1970-01-01
        • 2018-01-05
        • 1970-01-01
        • 1970-01-01
        • 2021-10-22
        相关资源
        最近更新 更多