Может кто-нибудь дать мне несколько советов о том, как совместить bumblebee с requireJs? BumbleBee сочетает Rhino, JSpec, Envjs и Ant, чтобы предоставить «из коробки» набор инструментов для тестирования JavaScript. Его очень полезно для нас, потому что он делает простой автономный запуск в терминале на ubuntu-box.Как использовать requireJs с envjs
Весь наш JS-код, основанный на requireJs-Modules, и кажется, что требуемые модули не загружаются, если они требуются из spec-файлов из envjs/bumblebee/rhine (какой материал когда-либо может быть ответственен для этого), может быть связано с фактом асинхронности в requireJs.
Что я сделал:
- я создал Шмель-среду в соответствии с инструкциями по github-site упомянутым выше
- Команды «муравей примеров» работает отлично, и оба тестовые примеры успешно работает
- Я добавил require-jquery.js в зависимости (заменив jquery.js, который был изначально настроен) (этот путь следует за учебником "How to use jQuery with requireJS" - который успешно работает по всему нашему веб-приложению (и отлично работает)
- Я написал некоторые requireJS-модули, потребовал их в spec-файлах и обнаружил очень быстро, что они не будут загружены (будут загружены файлы спецификаций, а метод require будет выполнен, но не будет содержимое)
- тогда я играл с этими setup-hints для объединения requireJS с узлом (носорог упоминается здесь также)
Эти файлы могут быть интересны:
Lib/bumblebee.js (которые я считал как точка входа всего тестового набора):
load('dependencies/js/env.rhino.1.2.js');
window.location="examples/fixture/fixture.html";
load('dependencies/js/jspec/jspec.js');
load('dependencies/js/require-jquery.js');
var runSpec = function(spec) {
JSpec.exec(spec);
};
define(function(require) {
console.log("A1");
var dep = require('dependency');
//The value returned from the function is
//used as the module export visible to Node.
return function() {};
});
require(['dependency'], function(d){
console.log("A2");
});
console.log("A3");
var specs = arguments;
jQuery.each(specs, function(index, spec) {
runSpec(spec);
});
JSpec
.run({ reporter: JSpec.reporters.Terminal, fixturePath: 'spec/fixtures' })
.report();
Только «A3» будет напечатан на консоль, код на основе требований никогда не будет выполнен здесь.
Tthen Я поместил детали define/require в spec-файлы из файлов примеров и обнаружил также, что я не могу использовать модули с требованием, потому что они не будут загружены и не будут нажаты.
Учитывая оригинальный Spec-файл из BambleBee-примеров:
describe('Greeter', function() {
load('examples/src/greeter.js');
it('greets people', function() {
expect(example.greeter().greet()).to(eql, 'Hello!');
});
});
Когда я теперь использовать модули requireJS-специфические, они также не будут загружены:
describe('Greeter', function() {
load('examples/src/greeter.js');
require(['dependency'], function(d){
// do something with D...
console.log("This will **NEVER** be printed");
});
console.log("This **WILL** be printed");
it('greets people', function() {
expect(example.greeter().greet()).to(eql, 'Hello!');
});
});
Вопрос в:
Есть ли способ объединить Envjs с requireJS или EnvJS неправильный инструмент тестирования для нас? Большое спасибо за любые подсказки!