我在Meteor的单元测试中挣扎。我想使用速度,茉莉花包,但我一定做错了。测试似乎不起作用,因为测试无法找到要测试的代码。测试项目可以在github上找到。
单元测试在这里: https://github.com/robvanpamel/coderepository/blob/master/meteor/sandwich-app/tests/jasmine/server/integration/spec/SandwichServiceSpec.js 当我在单元测试中取消注释创建的SandwichService时,测试工作正常。
我还没有在流星的其他地方做任何配置,我认为这就是问题所在。你必须在你指定源代码的地方放一个package.js文件吗? Jasmine怎么知道我在哪里可以找到我试图测试的SandwichService?这也是我得到的错误。 " ReferenceError:SandwichesService未定义"
编辑
我能够解决它并更新GitHub中的代码存储库。关键是不要使用Javascript原型。所以下面的内容不起作用
function SandwichesService(){};
SandwichesService.prototype.listSandwiches = function() {
// do stuff here
}
虽然下面的代码可以正常工作
SandwichService = {
listSandwiches: function(){
// do stuff here
}
};
我真的不明白为什么?有人可以告诉我吗?
亲切的问候和感谢! 罗布
答案 0 :(得分:0)
这是Meteor问题而非测试问题:)
您需要将SandwichesService放在全局命名空间中。默认情况下,您的第二个块会执行此操作。
尝试:
SandwichService = new SandwichesService()
(不要使用var)