首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用require.js时访问“全局”mocha.js函数

使用require.js时访问“全局”mocha.js函数
EN

Stack Overflow用户
提问于 2012-02-21 06:55:10
回答 2查看 7.3K关注 0票数 9

我为一个基于Require.js的站点提供了优秀的use shim,其中包含了Mocha.js。

在使用Require.js时,如何访问由Mocha声明的定义()和it() BDD函数?

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

test.js:

代码语言:javascript
复制
var mocha    = require('use!mocha')
  , testFile = require('testFile.js')

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

testFile.js:

代码语言:javascript
复制
define(function(require) {
  // describe() and it() are not available
  describe('Book', function() {
    it('should have pages', function() {

    });
  });
});

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

我尝试过window.describe,并尝试将require('testFile.js')移到mocha.setup('bdd')之后。我知道我错过了什么。可能以某种方式将上下文传递给了mocha。

EN

回答 2

Stack Overflow用户

发布于 2012-12-21 18:24:59

问题是像describeit这样的全局函数是由mocha.setup()设置的。在导出mocha之前,可以使用shim config的init属性来调用mocha.setup()

代码语言:javascript
复制
requirejs.config({
  shim: {
    'mocha': {
      init: function () {
        this.mocha.setup('bdd');
        return this.mocha;
      }
    }
  }
});

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

测试文件需要mocha。

代码语言:javascript
复制
define(['mocha'], function (mocha) {    
  describe('Something', function () {
    // ...
  });
});

填充配置的init属性是在RequireJS 2.1中引入的。您也许能够在RequireJS 2.0中使用exports属性,而不是init

票数 13
EN

Stack Overflow用户

发布于 2012-02-24 04:49:54

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

而不是在顶部包含测试文件和mocha,如下所示:

代码语言:javascript
复制
define(['use!mocha', 'testFile'],
function(Mocha, TestFile) {
  mocha.setup('bdd');
  mocha.run();
});

测试文件应该作为另一个require调用和嵌入在回调中的mocha.run()来包含:

代码语言:javascript
复制
define(['use!mocha'],
function(Mocha) {
  mocha.setup('bdd');

  // Include the test files here and call mocha.run() after.
  require(['testFile'],
  function(TestFile) {
    mocha.run();
  });
});
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9369690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档