Meteor.js: использование server.call при тестировании с Chimp
У меня проблема с вызовами методов при написании тестов функций. На самом деле я не получаю сообщение об ошибке в журнале терминала шимпанзе, но в строке server.call указывается ошибка. Я полагаю, что это может быть связано со структурой папок приложения (которую я свободно основал на Letterpress) или порядком, в котором вызов определяется и затем инициируется. Когда я перемещаю вызов метода в мой файл main.js (в корневой папке приложения), он работает без проблем.
Путь hooks.js: /app/tests/cucumber/features/support/hooks.js
(function(){
module.exports = function() {
this.Before(function() {
console.log("server calling");
server.call("fixtures/resetUsers"); //test stops here
});
};
})();
fixtures.js /app/packages/fixtures/fixtures.js
(function(){
'use strict';
Meteor.methods({
"fixtures/resetUsers": function() {
Meteor.users.remove({});
}
});
})();
package.js /app/packages/fixtures/packages.js
Package.describe({
name: 'forum:fixtures',
version: '0.0.1',
summary: '',
debugOnly: true
});
Package.onUse(function(api) {
api.versionsFrom('1.2.1');
api.use('ecmascript');
api.addFiles('fixtures.js', 'server');
});
Примечание. Изначально у меня не было папки с фикстурами в папке с пакетами (тогда она все еще не работала), но я наткнулся на этот пост @Xolv.io, разработчика Chimp.js, который советовал это сделать.
2 ответа
С новым шимпанзе вы можете просто использовать:
server.execute(function() {
// code you put here will run on the server
});
Проверьте этот репозиторий для примеров: https://github.com/xolvio/automated-testing-best-practices/
В вашем примере репозитория, если вы определите метеорный метод "что-то", вы можете вызвать как server.call ("что-то"). Если у вас есть стандартное определение метода (даже не метеорный метод), скажем что-то 2= функция (){}, с помощью xolvio:backdoor вы можете использовать server.execute('thing2'). (вызов шимпанзе с ключом --ddp)