所以我有一个简单的功能:

wpApp = angular.module('wpApp', ['ngRoute']);

wpApp.controller("ctrlr", function($scope) {
    $scope.message = 'This is the page';
});


我正在尝试使用Jasmine按照以下规范对其进行测试:

describe("A suite", function() {
    var scope;
    beforeEach(inject(function($rootScope, $controller) {
        scope = $rootScope.$new();
        $controller("controller", {
            $scope: scope
        });
    }));

    it("should have the default message", function() {
        return expect(scope.message).toBe('This is the page');
    });
});


但是,由于实际值不确定,因此无法正常工作。

我对AngularJS以及注入的想法比较陌生。我一直在StackOverflow,文档和教程中四处寻找,但我似乎还不太清楚我到底在做什么错。

希望它很小。有人可以帮我看看我需要更改我的规格吗?

最佳答案

您需要加载模块:

beforeEach(module('wpApp'));


然后,您需要加载正确的控制器:

$controller("ctrlr", {
    $scope: scope
});


完整的代码:

describe("A suite", function() {
  var scope;

  beforeEach(module('wpApp'));

  beforeEach(inject(function($rootScope, $controller) {
    scope = $rootScope.$new();
    $controller("ctrlr", {
      $scope: scope
    });
  }));

  it("should have the default message", function() {
    return expect(scope.message).toBe('This is the page');
  });
});


要么:

describe("A suite", function() {

  var $scope;

  beforeEach(function() {

    module('wpApp');

    inject(function($rootScope, $controller) {

      $scope = $rootScope.$new();

      $controller("ctrlr", {
        $scope: $scope
      });
    })
  });

  it("should have the default message", function() {
    return expect($scope.message).toBe('This is the page');
  });
});

关于javascript - 有人可以帮忙解释一下如何使用Jasmine测试此AngularJS吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24064000/

10-09 15:03