【问题标题】:Error: TypeError: undefined is not a constructor (evaluating '$browser.cookies()')错误:TypeError:未定义不是构造函数(评估'$browser.cookies()')
【发布时间】:2016-08-15 20:59:37
【问题描述】:

我正在使用 Karma 和 Jasmine 对我的应用程序中的 angular 模块运行单元测试。我遇到了使用 httpBackend.flush(); 的问题在标题中抛出错误。我已经尽我所能进行了研究,但我只能找到不同 angular/mocks 版本的问题。

我的版本如下:

  • 角 - 1.3.16
  • 角度模拟 - ^1.3.15
  • PhantomJS - ^1.9.17

版本号真的那么具体吗?

这是我的测试:

it('it returns address search results properly.', function() {

    $httpBackend.when('GET', strTestAddressApiURL).respond(httpResponse_AddressResults);

    $scope.firstname = 'Jon';
    $scope.lastname = 'Watson';
    $scope.street = '102 2nd Ave';
    $scope.postalcode = '81144';
    $scope.findBy = 'address';

    $scope.submit(true);
    $httpBackend.flush();

    expect($scope.data[0].accountnumber).toBe('2422101405');
    expect($scope.data[0].firstname).toBe('Jon');
    expect($scope.data[0].lastname).toBe('Watson');
    expect($scope.data[0].email).toBe('jwatson@fh.org');
    expect($scope.data[0].address).toBe('102 2nd Ave');
    expect($scope.data[0].postalcode).toBe('81144');

    expect($scope.data[1].accountnumber).toBe('2422113499');
    expect($scope.data[1].firstname).toBe('Joan');
    expect($scope.data[1].lastname).toBe('Watson');
    expect($scope.data[1].email).toBe('joan@fh.org');
    expect($scope.data[1].address).toBe('102 2nd Ave');
    expect($scope.data[1].postalcode).toBe('81144');

});

这是来自控制器的 $scope.submit

$scope.submit = function(isValid) {
            $scope.submitted = true;
            if(!isValid) {
                return;
            } else {
                if($scope.findBy == 'email') {
                    var validEmail = RegExp('[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}');
                    if(!validEmail.test($scope.email)) {
                        $scope.findaccount.email.$invalid = true;
                        return false;
                    }
                }
            }

【问题讨论】:

  • 显示$scope.submit
  • @HamletHakobyan 已更新 :-)
  • 那么,实际的$http 调用在哪里?

标签: javascript angularjs unit-testing karma-jasmine


【解决方案1】:

找到了答案 - 事实上,版本号甚至有一点偏差。

【讨论】:

    猜你喜欢
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 2014-01-01
    • 2015-03-30
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多