首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用磁带/ES6单元测试AMD模块?

用磁带/ES6单元测试AMD模块?
EN

Stack Overflow用户
提问于 2016-03-08 12:21:36
回答 2查看 888关注 0票数 1

我有一个网络应用程序使用:

  • ES5
  • RequireJS
  • 下划线
  • 主干
  • jQuery

我尝试使用以下方法建立一个新的单元测试套件:

  • ES6
  • 磁带
  • Babel6

我的AMD模块app/util/ module Util.js:

代码语言:javascript
复制
define([], function() {
    'use strict';

    return {
        isBlank: function(str) {
            return _.isUndefined(str) || _.isNull(str) || _.isString(str) && str.trim().length === 0;
        }
    };
});

我在tapeTest.js中的单元测试:

代码语言:javascript
复制
import test from 'tape';
import sortUtil from 'app/util/stringUtil';

test('Testing stringUtil', (assert) => {

    assert.ok(stringUtil.isBlank('   ')),
        'Should be blank');

    assert.end();
});

我的.babelrc:

代码语言:javascript
复制
{
  "presets": ["es2015"]
}

我用磁带进行测试:

代码语言:javascript
复制
tape -r babel-register tapeTest.js

我得到以下错误:

代码语言:javascript
复制
app/util/stringUtil.js:1
(function (exports, require, module, __filename, __dirname) { define([], function () {
                                                              ^
ReferenceError: define is not defined
    at Object.<anonymous> (stringUtil.js:1:23)
    at Module._compile (module.js:434:26)
    at loader (node_modules/babel-register/lib/node.js:126:5)
    at Object.require.extensions.(anonymous function) [as .js] (node_modules/babel-register/lib/node.js:136:7)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (tapeTest.js:7:17)
    at Module._compile (module.js:434:26)

我猜磁带不认识AMD模块?我能解决这个问题吗?也许把AMD模块转到CommonJS模块什么的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-07 07:50:46

您可以在节点内加载AMD模块,并使用:_)

在这里阅读:http://requirejs.org/docs/node.html

您必须导入require并执行一个小配置,如下所示:

代码语言:javascript
复制
'use strict';

const test = require('tape');
const requirejs = require('requirejs');

requirejs.config({
    baseUrl: __dirname,
    nodeRequire: require
});

test('Test something', function (assert) {
    requirejs(['app/util/stringUtil'], function   (stringUtil) {

        assert.ok(stringUtil.isBlank('   '), 'Should be blank');

        assert.end();
    });
});
票数 1
EN

Stack Overflow用户

发布于 2016-03-08 22:10:40

我用业力、webpack和幻影发射器解决了这个问题:

  • 因果报应
  • 卡玛-webpack
  • 因果报应-幻影发射器
  • 卡玛塔
  • 磁带

Webpack将ES6单元测试转到ES5模块,业力启动并在幻影浏览器中运行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35867276

复制
相关文章

相似问题

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