所以我在轨道上使用ruby工作,并且我第一次使用它与AngularJS 1,因此我第一次设置了rails内部angularjs的单元测试。我可以用rspec测试导轨没有问题,但我一直在努力测试angularjs,目前我正在使用茶匙茉莉和角度模拟测试一个简单的角度控制器,但我遇到了几个问题。下面的第一个文件是我的测试文件,我目前使用angular.mock.module / inject它,我得到的错误是“无法实例化模块angularrApp由于......”它基本上是说我没有创建或在任何地方加载angularApp,我虽然mock应该创建一个测试模块?如果我将模块设置为“angular.module(”name“,[])”就像我通常会创建一个角度应用程序,我会遇到更多问题,例如mainController尚未创建。我只是总体上有问题让这个正常工作,任何建议?在进行实际测试之前,我正试图让简单的第一个期望工作。我在spec_helper.js文件中需要角度和角度模拟,下面是所有文件。在我的spec_helper.js中要求创建角度应用程序的文件会有帮助吗?我已经尝试但是无法让它工作,因为一个在spec目录中,而我的角度应用程序在app / assets中。此外,如果它有帮助,这里是教程的链接我基于http://angular-rails.com/find_and_browse.html
的代码mainController_spec.js(测试文件)
'use strict';
describe("mainController", function() {
var scope,
ctrl,
location,
resource;
var setupController = function() {
angular.mock.inject( function($rootScope, $resource, $controller) {
scope = $rootScope.$new();
resource = $resource;
ctrl = $controller('mainController', {$scope: scope, $resource: resource });
})
}
beforeEach(function(){
angular.mock.module("angularApp");
setupController();
})
it('should work', function(){
expect(true).toBe(true);
// expect(scope.games).toBe([])
})
});
mainController.js
'use strict';
myApp.controller('mainController', [ 'mainFactory', '$scope', '$resource', (factory, scope, resource) => {
scope.games = [];
factory.populateTable((data) => {
scope.games = data;
})
}]);
角app.js
'use strict';
const myApp = angular.module('angularApp', ['ngRoute', 'ngResource']);
// routes in another file
答案 0 :(得分:0)
对于那些感兴趣的人,我遇到的问题是茶匙茉莉,phantomjs或两者都不能识别javascript es6语法,如果文件中通常需要es6,整个文件和它的内容被忽略,没有任何错误消息。一旦我将angularApp和控制器代码恢复为ES5,我的问题就解决了。