使用 jasmine return 错误检查 $scope 变量

Check $scope variable with jasmine return error

目前正在尝试检查非常简单的 angular 变量和函数。我连最简单的工作都做不到。这是我第一次使用它,我需要使用旧版本,因为我的讲师需要它。

在 app.js 中,我有很多控制器,但我只从一个控制器开始,一个变量分配给一个字符串:

var app = angular.module('myApp', ['ngRoute']);
blah blah blah etc etc

app.controller('HomeController', function ($scope) {
 $scope.name = 'Batman';
}

在 runner.html 文件中我有以下内容:

<script src="lib/jasmine-2.2.0/jasmine.js"></script>
<script src="lib/jasmine-2.2.0/jasmine-html.js"></script>
<script src="lib/jasmine-2.2.0/boot.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src='https://code.angularjs.org/1.4.8/angular-mocks.js'></script>

<!-- include source files here... -->
<script src="../js/main.js"></script>

<!-- include spec files here... -->
<script src="spec/test.js"></script>

在 test.js 我有以下内容:

describe('myApp', function () {
  var scope, controller;

  beforeEach(angular.mock.module('myApp'));

  beforeEach(angular.mock.inject(function($controller,$rootScope){
    scope = $rootScope.$new();
    $controller('HomeController', {$scope: scope});
  }));

  it('sets the name', function () {
    expect(scope.name).toBe('Batman');
  });
});

然后当我 运行 测试时出现以下错误: 错误:[$injector:modulerr]

编辑

似乎是 angular 路由导致了问题。当我删除路由模块 'ngRoute' 时,它似乎可以正常运行。 jasmine 有路由的方法吗?

这个问题是你没有包含 angular-route 库,尽管它是一个模块依赖项 (angular.module('myApp', ['ngRoute']))。

我添加了以下内容以及其他库:

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular-route.min.js"></script>

它正在运行!

这里是working plunker