我在共享的lib目录中有一个文件: LIB / functional.js
它将对象F附加到全局范围:
F = (function() {
return {
method1: function() {}
}
})();
在应用程序中,这工作正常,我可以通过F.method1()从任何地方,服务器和客户端访问method1。
我还在客户端上进行了单元测试:
describe('GameController', function () {
beforeEach(module('blockchess'));
// Get a new controller and rootscope before each test is executed
var $controller = {};
var $scope = {};
beforeEach(inject(function (_$rootScope_, _$controller_) {
$controller = _$controller_;
$scope = _$rootScope_.$new();
}));
it('should have a gameId', function () {
$controller('GameController as ctrl', {
$scope: $scope
});
expect($scope.ctrl.game.gameId).toBe('1');
});
});
该控制器使用F.method1,它工作正常。
但是当我尝试在单元测试中打电话时,在服务器中:
describe('Backfeed', function() {
var move = {
_id: '1'
};
var john = {
reputation: 10,
_id: '1'
};
var stars = 5;
// call protoRate
Meteor.methodMap.protoRate(john._id, move._id, stars);
expect(john.reputation).toEqual(9.47368421052632);
})
我收到此错误:
ReferenceError:F未定义
/home/adam/apps/blockchess/server/lib/protocol.js:9:14: ReferenceError:在Object.protoRate中未定义F. (/home/adam/apps/blockchess/server/lib/protocol.js:9:14)at at /home/adam/apps/blockchess/tests/jasmine/server/unit/backfeed/backfeedSpec.js:28:22
如果有帮助: 我还注意到,如果我删除包含F函数的IIFE:
F = function() {
return {
method1: function() {}
}
};
我可以从服务器单元测试中访问F,因为它在应用程序中无用。
任何想法如何解决这个问题?