类型错误:未定义不是构造函数

2024-04-11

我对 Angular 还很陌生,我仍在尝试解决其中的大部分问题。我正在使用从 Yeoman Generator 生成的 Angular 1.5.8 编写一些测试。

具体来说,我试图弄清楚如何操纵 $httpBackend 结果(我不确定这是否重要)...

在我的 app.js 文件中,我有以下代码:

.run(['$rootScope', '$location', 'breadcrumbService', function ($rootScope, $location, breadcrumbService) {
    $rootScope.$on('$viewContentLoaded', function () {
        jQuery('html, body').animate({scrollTop: 0}, 200);
    });

    $rootScope.isEditMode = false;
    $rootScope.$on('$stateChangeSuccess', function () {
        // ------------ this next line is failing -----------
        $rootScope.isEditMode = $location.path().toLowerCase().endsWith('/edit') || $location.path().toLowerCase().endsWith('/new');
    });

    $rootScope.parseJson = function (value) {
        return angular.fromJson(value);
    };

    $rootScope.bc = breadcrumbService;

    $rootScope.title = "";
}])

大约一半的线(我添加评论的地方)失败了。具体来说,endsWith函数失败(toLower 没问题),并出现以下错误:

PhantomJS 2.1.1 (Windows 8 0.0.0) Service: breadcrumbService should return breadcrumb label in json format FAILED
        TypeError: undefined is not a constructor (evaluating '$location.path().toLowerCase().endsWith('/edit')') in app/scripts/app.js (line 44)
        app/scripts/app.js:44:72
        $broadcast@bower_components/angular/angular.js:18005:33
        bower_components/angular-ui-router/release/angular-ui-router.js:3353:32
        processQueue@bower_components/angular/angular.js:16383:30
        bower_components/angular/angular.js:16399:39
        $eval@bower_components/angular/angular.js:17682:28
        $digest@bower_components/angular/angular.js:17495:36
        $apply@bower_components/angular/angular.js:17790:31
        done@bower_components/angular/angular.js:11831:53
        handleResponse@bower_components/angular-mocks/angular-mocks.js:1368:17
        flush@bower_components/angular-mocks/angular-mocks.js:1808:26
        test/spec/services/breadcrumbservice.js:33:27
        invoke@bower_components/angular/angular.js:4718:24
        workFn@bower_components/angular-mocks/angular-mocks.js:3085:26

这是我的测试代码(一些从不同示例修改的垃圾 - 只是想让它工作):

'use strict';

describe('Service: breadcrumbService', function () {

    // load the service's module
    beforeEach(module('myModule'));

    var $httpBackend, $rootScope, createController, authRequestHandler;
    beforeEach(inject(function($injector) {

        $httpBackend = $injector.get('$httpBackend');
        console.log('Is null? '+ ($httpBackend == null));
        $httpBackend.whenGET(/views\/.*/).respond(200, [{}, {}, {}]);

        authRequestHandler = $httpBackend.when('GET', '/api/v1/SiteStagings')
            .respond({userId: 'userX'}, {'A-Token': 'xxx'});

        // Get hold of a scope (i.e. the root scope)
        $rootScope = $injector.get('$rootScope');
        $httpBackend.flush();
    }));

    // instantiate service
    var breadcrumbService;
    beforeEach(inject(function (_breadcrumbService_) {
        breadcrumbService = _breadcrumbService_;
    }));

    it('svc should exist', function () {
        expect(!!breadcrumbService).toBe(true);
    });

    it('should return breadcrumb label in json format', function () {
        var result = breadcrumbService.getFromCache('site', 'SiteGroupStagings', 46, 'SiteGroupDesc');
        console.log(result);
        expect(!!result).toBe(true);

    });
});

我不怀疑我在这里做错了什么,我只是不太明白那是什么。这个错误的真正含义是什么以及为什么它不喜欢我的电话endsWith?

Thanks


undefined 不是构造函数

是当您尝试调用未定义的函数时 PhantomJS 显示的错误消息。这取决于您的 PhantomJS 支持的 ECMAScript 版本。正如你所说,它在 Chrome 中运行良好,因为该浏览器支持你在测试中使用的功能。 为了解决您的问题并仍然能够使用 PhantomJS,您可以用一些替代函数替换“PhantomJS 未知”函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类型错误:未定义不是构造函数 的相关文章

随机推荐

  • mmap() 整个大文件

    我正在尝试使用以下代码 test c mmap 二进制文件 8Gb include
  • 在 sqlite 数据库中使用 System.Data.Linq.Mapping 和自动递增主键时出错

    我在用着SQLite and System Data Linq Mapping 我有一个问题id AUTOINCREMENT使用 linq 映射属性时的字段IsDbGenerated true 创建表的语法 我已经尝试过使用 不使用AUTO
  • 无法在使用 Python3.8 的 Ubuntu 上安装 dbus-python

    我想在我的 Ubuntu 上安装 HP 驱动程序 hplip 它尝试安装 d bus python 包 但失败并提示手动安装 使用 apt 安装工作正常 但可能不适用于我的主要 Python 版本 这就是 hplip 失败的原因 sudo
  • 运行 ng test 时如何解析 test.ts?

    我正在使用 Angular CLI 当我运行时ng test 它开始启动浏览器 然后我突然收到错误 userName UserName devApp profiles ng test 10 building modules 1 1 modu
  • 无法获取某些用户的页面

    我开发了一个 PHP 应用程序 只需要获取用户是否喜欢某个页面 我这样登录用户 this gt facebook new Facebook array appId gt 123 secret gt 346 this gt facebookU
  • 在替换器中访问验证失败的值?

    当在 Laravel 中使用自定义验证规则和替换器时 我真的很难找到任何可以简单地让您获取验证失败的值的文档 例如 我创建了一个文件存在验证器 Validator extend view exists function field valu
  • 如何使用React中的map函数更改第一个元素的css?

    我正在考虑每次更新数组时仅更改数组上的第一个元素 我无法在 ReactJS 中提出任何解决方案 例如 如果我有一个来自数组的用户列表 我只想启用该用户列表中的第一个用户 您确实可以访问index参数 您可以仅将类添加到第一个元素 您只需检查
  • 警告:mysqli_query() 期望参数 1 为 mysqli 布尔值[重复]

    这个问题在这里已经有答案了 通过我的表单提交一些内容后 我得到欢迎部分 然后是 mysql 连接错误 因为 mysql 已关闭 当我打开它时它消失 然后是布尔错误 警告 mysqli query 期望参数 1 为 mysqli 布尔值在 C
  • 无需用户执行即可重置 MySQL 字段值

    我需要在午夜自动重置 MySQL 字段值 它是表中特定行中的特定列 我知道如何在 PHP 中执行此操作 但我不知道如何在午夜执行 PHP 脚本 而无需有人自己执行 您有可行的解决方案吗 编辑 最好不使用 Cron Jobs 如果你在 Lin
  • R Markdown 和 Windows 中的多行乳胶方程

    下面的代码在linux上运行良好 title LaTeX test author Ignacio output html document Latex begin aligned y j sim N theta j sigma j 2 si
  • AlarmManager 第二次过早触发 PendingIntent

    我有这个代码 设置闹钟 public void setAlarm Calendar Calendar Object Calendar getInstance Calendar Object add Calendar DAY OF YEAR
  • 如何使用 C# 最大化 Selenium WebDriver (Selenium 2) 中的浏览器窗口?

    有没有办法使用 WebDriver Selenium 2 和 C 来最大化浏览器窗口 driver Manage Window Maximize 这适用于 IE 和 Firefox Chrome 无法工作 ChromeDriver 项目上为
  • android 中 EditText 内的可点击按钮(或任何视图)

    我想在我的 EditText 中有一个按钮或可单击的视图 以便我可以在单击它时执行一些操作 我能够在我的 EditText 中放置一个可绘制对象 这要归功于马科斯贝里戈 https stackoverflow com users 18191
  • 如何从脚本中获取当前的 PHP 可执行文件?

    我想从 PHP CLI 中运行 PHP CLI 程序 在某些将运行此程序的计算机上 同时安装了 PHP 4 和 PHP 5 如果我运行外部程序 php5 outer php 我希望内部脚本使用相同的 PHP 版本运行 在 Perl 中 我会
  • 循环结束时的无限动画关键帧和 z 索引问题

    我有一些动画 最终希望能组成一个漂亮的纯 CSS 动画 基本上我将数字分成两部分 并在 X 轴上旋转 180 为这两部分设置动画 然而 由于关键帧的无限循环 我在 z 索引方面遇到了问题 在循环结束时 错误的数字位于顶部 因此短暂地显示了错
  • ASP.NET Core - 在运行时更改 JWT SecurityKey

    具有与此类似的配置 services AddAuthentication JwtBearerDefaults AuthenticationScheme AddJwtBearer x gt x TokenValidationParameter
  • 如何使用 homebrew 在 macOS 中安装早期版本的 Python 3?

    如何使用brew 在 macOS 中安装以前版本的Python 3 通过命令brew install python我获得了最新版本的 Python 3 当前为 v3 7 0 但我想要最新版本的 Python 3 6 当前为 3 6 5 我读
  • 如何将边框半径应用于具有水平滚动的分隔表格行?

    我有一个包含大量数据的表 因此必须水平滚动 我设计了将每一行分隔为每张单独卡片的表格 但我无法正确获得表格行左右部分的边框半径 如果我滚动到右端 那么我可以看到右侧的半径和左侧的半径相同 当您位于中间时 您看不到任何边界半径 PS 当存在水
  • 如何间隔重叠注释

    我想用一些文本注释图表中的条形 但如果条形靠得很近并且高度相当 则注释高于 ea 其他 因此难以阅读 注释的坐标取自条形位置和高度 如果发生碰撞 有没有办法移动其中一个 Edit 这些条非常细 有时非常接近 所以仅垂直对齐并不能解决问题 A
  • 类型错误:未定义不是构造函数

    我对 Angular 还很陌生 我仍在尝试解决其中的大部分问题 我正在使用从 Yeoman Generator 生成的 Angular 1 5 8 编写一些测试 具体来说 我试图弄清楚如何操纵 httpBackend 结果 我不确定这是否重