Javascript 使用Intern Js-Can'测试节点模块;t解决';要求';

Javascript 使用Intern Js-Can'测试节点模块;t解决';要求';,javascript,unit-testing,javascript-framework,intern,Javascript,Unit Testing,Javascript Framework,Intern,我试图用intern测试一个简单的节点模块。该模块是AMD模块。我遇到了几个问题 如果模块的定义如下,我得到错误“moduleName”已经存在 没有方法“映射” define('moduleName',[]函数(require){var r=require('request'); }) 如果模块定义如下,没有moduleName,我看到了这一点 错误“undefined不是函数”-我猜它无法解析'require' define([]函数(require){var r=require('requ

我试图用intern测试一个简单的节点模块。该模块是AMD模块。我遇到了几个问题

  • 如果模块的定义如下,我得到错误“moduleName”已经存在 没有方法“映射”

    define('moduleName',[]函数(require){var r=require('request');
    })

  • 如果模块定义如下,没有moduleName,我看到了这一点 错误“undefined不是函数”-我猜它无法解析'require'

    define([]函数(require){var r=require('request');})

  • 下面是我的测试结果

    define([
    'intern!object',
    'intern/chai!assert',
    '/src/api/nameApi'
    ], function (registerSuite, assert,nameApi) {
        registerSuite({
        name: 'GetName Test',
        getName: function () {
            var nameFromApi = nameApi.getName();
            assert( nameFromApi!= null,'name is not null');
        }
    });
    

    })

    提供一个明确的模块ID作为
    定义的第一个参数会破坏模块的可移植性,不应该这样做。主分支使用的加载程序目前不支持它,因为这是一个糟糕的主意。geezer分支支持它,但我再次强烈建议您不要使用此模式

    您提供的第二个模块定义是错误的;如果希望加载特殊require函数,则需要将
    'require'
    放入依赖项数组中。如果希望将模块ID作为依赖项预加载,则也不能使用变量将其传递给
    require
    函数。因此,它应该看起来像这样:

    定义(['require',foo'],函数(require){
    var foo=require('foo');
    });
    
    或者,使用CommonJS兼容性包装语法,其中隐式提供了
    require

    定义(功能(需要){
    var r=要求('foo');
    });
    

    编辑:另外,既然您已经添加了测试模块:在您的测试的
    定义中,“/src/api/nameApi”是无效的。

    谢谢您的回答。这是请求的输入错误,现在在问题中更改了。我尝试了
    ['require']
    在依赖项中,但它无法加载“请求”模块。是否必须在
    加载程序
    中的
    测试/intern.js
    中指定
    请求
    模块。如果是,如何加载节点模块中的所有模块?
    尝试在contextRequire中要求卸载模块请求(/Users/userId/Documents/gitRepos/MyProject/node_modules/intern/node_modules/dojo/dojo.js:255:12)
    答案完全相同。您的define调用错误,缺少您试图加载的依赖项。请阅读和/或了解AMD依赖项的工作原理。以下是我的模块定义的外观,不要认为这没有什么问题。
    define(function(require){var foo=require('request');}
    如果此定义正确,我如何确保加载“请求”和其他npm_模块。应用程序可以加载“请求”模块,但不能加载测试。因此,我如何确保测试加载应用程序加载的所有模块如果您尝试加载Node.js模块,请在wiki中阅读。