我在编写功能测试时遇到触发方法调用的问题。我实际上并没有在黑猩猩终端日志中给出错误,但是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');
});
注意:我最初没有在packages文件夹中包含fixtures文件夹(它仍然没有工作)但是@ Xolv.io遇到了this post,Chimp.js的开发人员这样做。
答案 0 :(得分:1)
使用新的黑猩猩,你可以使用:
server.execute(function() {
// code you put here will run on the server
});
查看此存储库以获取示例: https://github.com/xolvio/automated-testing-best-practices/
答案 1 :(得分:0)
在你的样本仓库中,如果你定义一个流星方法,'某事',你可以调用server.call('something')。 如果你有一个标准的方法定义(甚至不是流星方法),比如说something2 = function(){},使用xolvio:backdoor,你可以使用server.execute('something2')。 (用--ddp开关调用黑猩猩)