访问“全球”使用 require.js 时 mocha.js 的功能

发布于 2025-01-07 15:45:26 字数 763 浏览 1 评论 0原文

我将 Mocha.js 与基于 Require.js 的网站的优秀 使用 shim 结合在一起。

使用 Require.js 时如何访问 Mocha 声明的 Define() 和 it() BDD 函数?

下面是一个基本的代码示例:

test.js:

var mocha    = require('use!mocha')
  , testFile = require('testFile.js')

mocha.setup('bdd');
mocha.run();

testFile.js:

define(function(require) {
  // describe() and it() are not available
  describe('Book', function() {
    it('should have pages', function() {

    });
  });
});

在浏览器中运行时,出现错误 Uncaught ReferenceError:describe is not Define

我尝试过 window.describe 并尝试将 require('testFile.js') 移至 mocha.setup('bdd') 之后。我知道我错过了一些东西。可能以某种方式将上下文传递给摩卡。

I am including Mocha.js with the excellent use shim for a Require.js-based site.

How do I access the define() and it() BDD functions declared by Mocha when using Require.js?

Here is a basic code example:

test.js:

var mocha    = require('use!mocha')
  , testFile = require('testFile.js')

mocha.setup('bdd');
mocha.run();

testFile.js:

define(function(require) {
  // describe() and it() are not available
  describe('Book', function() {
    it('should have pages', function() {

    });
  });
});

I get the error Uncaught ReferenceError: describe is not defined when running in the browser.

I have tried window.describe and tried moving the require('testFile.js') to after the mocha.setup('bdd'). I know I am missing something. Probably passing the context to mocha somehow.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

转瞬即逝 2025-01-14 15:45:26

问题是 describeit 等全局函数是由 mocha.setup() 设置的。您可以在导出 mocha 之前使用 shim 配置的 init 属性调用 mocha.setup()

requirejs.config({
  shim: {
    'mocha': {
      init: function () {
        this.mocha.setup('bdd');
        return this.mocha;
      }
    }
  }
});

require(['mocha', 'test/some_test'], function (mocha) {
  mocha.run();
});

测试文件需要需要 mocha。

define(['mocha'], function (mocha) {    
  describe('Something', function () {
    // ...
  });
});

Shim 配置的 init 属性在 RequireJS 2.1。您可以使用 exports 属性代替 initRequireJS 2.0

The problem is that the global functions such as describe and it are set up by mocha.setup(). You can use shim config's init property to call mocha.setup() before mocha is exported.

requirejs.config({
  shim: {
    'mocha': {
      init: function () {
        this.mocha.setup('bdd');
        return this.mocha;
      }
    }
  }
});

require(['mocha', 'test/some_test'], function (mocha) {
  mocha.run();
});

Test files need to require mocha.

define(['mocha'], function (mocha) {    
  describe('Something', function () {
    // ...
  });
});

Shim config's init property was introduced in RequireJS 2.1. You might be able to use exports property instead of init with RequireJS 2.0.

╰◇生如夏花灿烂 2025-01-14 15:45:26

我在 geddski 的 amd-testing Examples 项目中找到了解决方案。

不要将测试文件与 mocha 一起包含在顶部,如下所示:

define(['use!mocha', 'testFile'],
function(Mocha, TestFile) {
  mocha.setup('bdd');
  mocha.run();
});

测试文件应作为另一个 require 调用包含在内,并将 mocha.run() 嵌入回调中:

define(['use!mocha'],
function(Mocha) {
  mocha.setup('bdd');

  // Include the test files here and call mocha.run() after.
  require(['testFile'],
  function(TestFile) {
    mocha.run();
  });
});

I found the solution in geddski's amd-testing examples project.

Instead of including the test file(s) at the top along with mocha like so:

define(['use!mocha', 'testFile'],
function(Mocha, TestFile) {
  mocha.setup('bdd');
  mocha.run();
});

The test file(s) should be included as another require call and mocha.run() embedded in the callback:

define(['use!mocha'],
function(Mocha) {
  mocha.setup('bdd');

  // Include the test files here and call mocha.run() after.
  require(['testFile'],
  function(TestFile) {
    mocha.run();
  });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文