0

所以我正在使用 ruby​​ on rails 工作,并且我第一次将它与 AngularJS 1 一起使用,因此我第一次在 rails 内设置了 angularjs 的单元测试。我可以用 rspec 测试 rails 没问题,但我一直在努力测试 angularjs,目前我正在使用 teaspoon-jasmine 和 angular-mocks 来测试一个简单的角度控制器,但我遇到了几个问题。下面的第一个文件是我的测试文件,我目前使用 angular.mock.module/inject 拥有它,我得到的错误是“无法实例化模块 angularrApp 由于...”它基本上是说我没有创建或在任何地方加载 angularApp,我虽然模拟应该创建一个测试模块?如果我将模块设置为“angular.module("name", [])”,就像我通常会创建一个 Angular 应用程序一样,我遇到了更多问题,例如尚未创建 mainController。我只是总体上无法正常工作,有什么建议吗?在进行实际测试之前,我试图让简单的第一个期望工作。我需要在 spec_helper.js 文件中的 angular 和 angular-mocks,下面的所有文件。在我的 spec_helper.js 中要求创建角度应用程序的文件是否有帮助?我已经尝试过但无法让它工作,因为一个在规范目录中,而我的 Angular 应用程序在 app/assets 中。另外,如果有帮助,这里是我基于此代码的教程的链接 在我继续进行实际测试之前,我试图让简单的第一个期望工作。我需要在 spec_helper.js 文件中的 angular 和 angular-mocks,下面的所有文件。在我的 spec_helper.js 中要求创建角度应用程序的文件是否有帮助?我已经尝试过但无法让它工作,因为一个在规范目录中,而我的 Angular 应用程序在 app/assets 中。另外,如果有帮助,这里是我基于此代码的教程的链接 在我继续进行实际测试之前,我试图让简单的第一个期望工作。我需要在 spec_helper.js 文件中的 angular 和 angular-mocks,下面的所有文件。在我的 spec_helper.js 中要求创建角度应用程序的文件是否有帮助?我已经尝试过但无法让它工作,因为一个在规范目录中,而我的 Angular 应用程序在 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([])
	})

});

主控制器.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

4

1 回答 1

0

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

于 2018-03-20T21:22:07.283 回答