【问题标题】:ReferenceError: module is not defined in jasmineReferenceError:茉莉花中未定义模块
【发布时间】:2015-05-17 00:37:34
【问题描述】:

当我运行 SpecRunner.html 时,出现以下错误

ReferenceError: 模块未定义

我的控制器是

angular.module('mymodule', [])
  .controller('mycontroller', ['$scope',
    function($scope) {
      $scope.employees = [{
        name: 'Dick',
        address: 'Mumbai'
      }, {
        name: 'Tom',
        address: 'US'
      }];
      $scope.addEmployee = function() {
        $scope.employees.push({
          name: $scope.name,
          address: $scope.address
        });
      }

    }
  ])

我的规格是

describe('Employee', function() {
  var mycontroller, scope;
  beforeEach(module('mymodule'));

  beforeEach(inject(function($controller, $scope) {
    scope = $rootScope;
    mycontroller = $controller('mycontroller', {
      $scope: scope

    });
  }));
  it("when employee gets added", function() {
    var employeecount = $scope.employees.count;
    $scope.addEmployee('xxxx', 'yyy');
    var employeecount1 = $scope.employees.count;
    expect(employeecount + 1).toBe(employeecount1);
  });
});

我的 SpecRunner.html 是

    <link rel="shortcut icon" type="image/png" href="lib/jasmine-2.2.0/jasmine_favicon.png">
  <link rel="stylesheet" href="lib/jasmine-2.2.0/jasmine.css">

  <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.3.14/angular.min.js"></script>
    <script src="../Controller.js"></script>
    <script src="spec/myspec.js"></script>

PS:这是我在 jasmine 中的第一个单元测试。

【问题讨论】:

    标签: javascript angularjs angularjs-scope jasmine


    【解决方案1】:

    好的,所以我整天都在处理这个问题,终于找到了为什么它不起作用,即使我的规范运行器中有角度模拟脚本。这里的顺序很重要,这对我有用。

      <link rel="shortcut icon" type="image/png" href="lib/jasmine-2.4.0/jasmine_favicon.png">
      <link rel="stylesheet" href="lib/jasmine-2.4.0/jasmine.css">
    
        <script src="lib/jasmine-2.4.0/jasmine.js"></script>
        <script src="lib/jasmine-2.4.0/jasmine-html.js"></script>
        <script src="lib/jasmine-2.4.0/boot.js"></script>
    
      <script src="../../lib/angular/angular.js"></script>
      <script src="../../lib/angular/angular-animate.js"></script>
      <script src="../../lib/angular/angular-route.js"></script>
      <script src="../../lib/angular/angular-touch.js"></script>
      <script src="../../lib/angular/angular-sanitize.js"></script>
      <script src="../../lib/angular/angular-mocks.js"></script>
    
      <!-- include source files here... -->
      <script src="../student/data/classesData.js"></script>
    
      <!-- include spec files here... -->
      <script src="spec/LMSClassesSpec.js"></script>
    

    我真的希望这对将来的某人有所帮助

    【讨论】:

      【解决方案2】:

      您从测试代码中引用了 window.module。你需要在你的 spec-runner 中加载 angular-mocks 来做到这一点,见https://docs.angularjs.org/api/ngMock/function/angular.mock.module

      【讨论】:

      • 我有,但后来我发现我需要在加载 angular 和 angular-mocks 之前包含 Jasmine js 文件(Yeysides 的回答)。做相反的事情也会导致错误。
      猜你喜欢
      • 2018-06-26
      • 2013-10-17
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      • 2014-11-13
      相关资源
      最近更新 更多