当前位置: 首页 > 面试题库 >

如何使用Mocha测试“正常”(非特定于节点的)JavaScript函数?

华宣
2023-03-14
问题内容

这看起来 应该 非常简单;但是,经过两个小时的阅读和反复试验却没有成功,我承认失败并问你们!

我正在尝试将Mocha与Should.js结合使用以测试一些JavaScript函数,但是我遇到了范围界定问题。我已经将其简化为最基本的测试用例,但是我无法使其正常工作。

我有一个名为的文件functions.js,其中仅包含以下内容:

function testFunction() {
    return 1;
}

和我tests.js(位于同一文件夹中)的内容:

require('./functions.js')

describe('tests', function(){
    describe('testFunction', function(){
        it('should return 1', function(){
            testFunction().should.equal(1);
        })
    })
})

此测试失败,并显示ReferenceError: testFunction is not defined

我明白了为什么,因为我发现大多数示例都将对象和函数附加到Node
global对象或使用导出它们,module.exports但是使用这两种方法都意味着我的函数代码会在标准的浏览器情况下抛出错误,因为这些对象不存在。

那么,如何在不使用Node特定语法的情况下访问与测试分开的脚本文件中声明的独立函数?


问题答案:
require('./functions.js')

由于您不导出任何内容,因此该操作不会执行任何操作。您所期望的testFunction是全球可用的,基本上与

global.testFunction = function() {
    return 1;
}

您只是 无法
绕过导出/全局机制。这是节点的设计方式。没有隐式的全局共享上下文(例如window在浏览器上)。模块中的每个“全局”变量都被包含在其上下文中。

您应该使用module.exports。如果您打算与浏览器环境共享该文件,则可以通过多种方法使其兼容。要进行快速黑客攻击,只需window.module = {}; jQuery.extend(window, module.exports)在浏览器中或if (typeof exports !== 'undefined'){ exports.testFunction = testFunction }对于节点执行即可。



 类似资料:
  • 问题内容: 我正在使用JavaScript测试运行程序“摩卡”。 我的测试失败了,因此我将使用进行调试。 但是运行测试时,没有输出(仅来自Mocha的测试结果)。看来Mocha已捕获并抑制了我的输出! 如何让Mocha显示输出?(对于失败的测试)? 编辑: 抱歉!- 在测试期间可以正常工作!我肯定一直期望它抑制输出,而且我没有正确检查自己的代码。感谢您的回应。所以…话虽如此…也许抑制通过测试的输出

  • 如何使用jest框架测试void javascript函数(一个不返回任何东西的函数)?你能提供一个同样的例子吗? 我们如何测试这种类型的函数?

  • 我有一个XML文件,我正试图解析它以获得名为的标记。 使用xpath和,我可以看到有10个子节点,每个节点都被命名为。但如果我使用以下任何一种XPath,就没有匹配项: 我所做的一切都不是返回任何标记。但是我知道有10个。我可以通过获得,所以我知道我正在连接到这个文件。我如何生成一个xpath来到达每个? XML结构(缩写):

  • 问题内容: 我刚刚在我的express应用程序中添加了shouldjs和mocha进行测试,但是我想知道如何测试我的应用程序。我想这样做: 当然,测试套件中的最后一个测试只是告诉med,res.render函数(在show_create_user_screen中调用)是未定义的,可能是因为服务器未运行且配置尚未完成。所以我想知道其他人如何设置他们的测试? 问题答案: 好的,虽然测试路由代码是您可能

  • 要运行Mocha的测试,您需要GNU Make或兼容; Cygwin应该工作。 $ cd /path/to/mocha $ npm install $ npm test 要使用其他记者: $ REPORTER=nyan npm test

  • 我想在我的项目中测试特定的测试类,因为有很多测试类失败,我只想一次测试一个类。 我在以下文件夹中创建了测试类: 因此,我尝试了以下命令,但均无效: = 有什么帮助吗?谢谢