2013-10-10 3 views
0

Я пытаюсь протестировать простой узел Модуль с intern.The модуль является модулем AMD. Я бегу в пару вопросовТестирование модуля узла со встроенным Js-не может решить 'require'

  1. Если модуль определяется как ниже, я получаю ошибку «MODULENAME» не имеет нет метода «Карта» "

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

  2. Если модуль определяется как ниже без имени модуля, я вижу это Ошибка «undefined не является функцией» - я думаю, что она не в состоянии разрешить «требовать»

    define([]function(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'); 
    } 
}); 

});

ответ

0

Предоставление явного идентификатора модуля в качестве первого аргумента define разрушает переносимость модуля и не должно выполняться. В настоящее время он не поддерживается загрузчиком, используемым ведущей ветвью, потому что это такая плохая идея. Это -, поддерживаемый веткой geezer, но я настоятельно рекомендую никогда не использовать этот шаблон.

Второе определение модуля, которое вы указали, просто неверно; вам нужно поставить 'require' в ваш массив зависимостей, если вы ожидаете загрузить специальную требуемую функцию. Вы также не можете использовать переменную для передачи идентификатора модуля функции require, если вы ожидаете, что она будет предварительно загружена как зависимость. Таким образом, он должен выглядеть следующим образом:

define(['require', 'foo'], function (require) { 
    var foo = require('foo'); 
}); 

или, используя CommonJS совместимость обертку синтаксис, где require неявно при условии:

define(function (require) { 
    var r = require('foo'); 
}); 

EDIT: Кроме того, теперь, когда вы добавили модуль тестирования: в пределах вашего теста define, '/ src/api/nameApi' не является действительным AMD module identifier.

+0

Благодарим за ответ. Это была опечатка для запроса, измененная в вопросе сейчас. Я пытался с '['require']' в зависимостях, но он не может загрузить модуль 'request'. Должен ли я указывать модуль 'request' в' test/intern.js' в 'loader'. Если да, то как загрузить все модули в node_modules? 'Попытка требовать выгружается запроса модуля на contextRequire (/Users/userId/Documents/gitRepos/MyProject/node_modules/intern/node_modules/dojo/dojo.js:255:12)' – kiran

+0

Ответ точно так же. Ваш вызов определения неправильный, отсутствуют зависимости, которые вы пытаетесь загрузить. Прочтите http://dojotoolkit.org/documentation/tutorials/1.9/modules/ и/или http://requirejs.org/docs/api.html#defdep, чтобы узнать, как работают зависимости от AMD. –

+0

Вот как выглядит мое определение модуля. Не думайте, что в этом нет ничего плохого. 'define (function (require) { var foo = require ('request'); });' , если это определение правильно, как я могу убедиться, что загружаются «запрос» и другие npm_modules. Приложение может загрузить модуль «запрос», но не тест.Итак, как я могу обеспечить, чтобы тесты загружали все модули, которые загружает приложение? – kiran

 Смежные вопросы

  • Нет связанных вопросов^_^