试图让角度模拟与茶匙茉莉花一起工作

时间:2018-03-19 03:06:51

标签: ruby-on-rails angularjs jasmine angular-mock teaspoon

所以我在轨道上使用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

1 个答案:

答案 0 :(得分:0)

对于那些感兴趣的人,我遇到的问题是茶匙茉莉,phantomjs或两者都不能识别javascript es6语法,如果文件中通常需要es6,整个文件和它的内容被忽略,没有任何错误消息。一旦我将angularApp和控制器代码恢复为ES5,我的问题就解决了。