流星中的单元测试无法找到测试所需的代码

时间:2015-12-23 17:45:01

标签: meteor jasmine meteor-velocity meteor-jasmine

我在Meteor的单元测试中挣扎。我想使用速度,茉莉花包,但我一定做错了。测试似乎不起作用,因为测试无法找到要测试的代码。测试项目可以在github上找到。

我要测试的代码在这里: https://github.com/robvanpamel/coderepository/blob/master/meteor/sandwich-app/server/Services/SandwichService.js

单元测试在这里: 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
  }
};

我真的不明白为什么?有人可以告诉我吗?

亲切的问候和感谢! 罗布

1 个答案:

答案 0 :(得分:0)

这是Meteor问题而非测试问题:)

您需要将SandwichesService放在全局命名空间中。默认情况下,您的第二个块会执行此操作。

尝试:

SandwichService = new SandwichesService()

(不要使用var)