ReferenceError:模块未定义 - Karma/Jasmine 配置与 Angular/Laravel 应用程序

2024-01-10

我有一个现有的 Angular/Laravel 应用程序,其中 Laravel 充当仅提供 JSON 数据的 Angular 前端的 API。加载角度应用程序的页面,index.php,目前由 Laravel 提供服务。从那时起,Angular 就接管了一切。

我在尝试开始使用 Karma/Jasmine 时遇到了非常困难的时间。当使用运行我的测试时karma start or karma start karma.conf.js从我的项目的根目录,我收到以下错误:

ReferenceError: module is not defined

完整输出:

INFO [karma]: Karma v0.12.28 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
WARN [watcher]: Pattern "/Users/raph/coding/webroot/digitalocean/rugapp/public/rugapp/*.js" does not match any file.
INFO [Chrome 39.0.2171 (Mac OS X 10.9.5)]: Connected on socket 3OCUMp_xhrGtlGHwiosO with id 7897120
Chrome 39.0.2171 (Mac OS X 10.9.5) hello world encountered a declaration exception FAILED
    ReferenceError: module is not defined
        at Suite.<anonymous> (/Users/raph/coding/webroot/digitalocean/rugapp/tests/js/test.js:3:16)
        at jasmineInterface.describe (/Users/raph/coding/webroot/digitalocean/rugapp/node_modules/karma-jasmine/lib/boot.js:59:18)
        at /Users/raph/coding/webroot/digitalocean/rugapp/tests/js/test.js:1:1
Chrome 39.0.2171 (Mac OS X 10.9.5): Executed 2 of 2 (1 FAILED) (0.005 secs / 0.003 secs)

但是,chrome 浏览器会启动并显示以下内容:

My karma.conf.js文件如下:

// Karma configuration
// Generated on Mon Dec 22 2014 18:13:09 GMT-0500 (EST)

module.exports = function(config) {
  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: 'public/rugapp/',


    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['jasmine'],


    // list of files / patterns to load in the browser
    files: [
      '*.html',
      '**/*.js',
      '../../tests/js/test.js',
      '../../tests/js/angular/angular-mocks.js'
    ],


    // list of files to exclude
    exclude: [

    ],


    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
    },


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['progress'],


    // web server port
    port: 9876,


    // enable / disable colors in the output (reporters and logs)
    colors: true,


    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_INFO,


    // enable / disable watching file and executing tests whenever any file changes
    autoWatch: true,


    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['Chrome'],


    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false
  });
};

My package.json文件如下所示:

{
  "devDependencies": {
    "gulp": "^3.8.8",
    "karma": "^0.12.28",
    "karma-chrome-launcher": "^0.1.7",
    "karma-jasmine": "^0.3.2",
    "laravel-elixir": "*"
  }
}

test.js

describe("hello world", function() {
    var CreateInvoiceController;
    beforeEach(module("MobileAngularUiExamples"));
    beforeEach(inject(function($controller) {
        CreateInvoiceController = $controller("CreateInvoiceController");
    }));

    describe("CreateInvoiceController", function() {
        it("Should say hello", function() {
            expect(CreateInvoiceController.message).toBe("Hello");
        });
    });
});

describe("true", function() {
    it("Should be true", function() {
        expect(true).toBeTruthy();
    });
});

任何帮助都会greatly赞赏。


也许这会对某人有所帮助。

对我来说,解决方案是确保angular-mocks.js在我的测试之前加载。如果您不确定,您可以控制顺序karma.conf.js在以下部分下:

// list of files / patterns to load in the browser
files: [
// include files / patterns here

接下来,为了让我的测试真正加载我的角度应用程序,我必须执行以下操作:

describe("hello world", function() {
    var $rootScope;
    var $controller;
    beforeEach(module("YourAppNameHere"));
    beforeEach(inject(function($injector) {

        $rootScope = $injector.get('$rootScope');
        $controller = $injector.get('$controller');
        $scope = $rootScope.$new();

    }));
    beforeEach(inject(function($controller) {
        YourControllerHere = $controller("YourControllerHere");

    }));

    it("Should say hello", function() {
        expect(YourControllerHere.message).toBe("Hello");
    });

});

在你的控制器中,

app.controller('YourControllerHere', function() {

    this.message = "Hello";

});

另外,还有一种方法:

describe("YourControllerHere", function() {
    var $scope;
    var controller;

    beforeEach(function() {

        module("YourAppNameHere");

        inject(function(_$rootScope_, $controller) {

            $scope = _$rootScope_.$new();
            controller = $controller("YourControllerHere", {$scope: $scope});

        });

    });

    it("Should say hello", function() {
        expect(controller.message).toBe("Hello");
    });

});

享受测试吧!

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

ReferenceError:模块未定义 - Karma/Jasmine 配置与 Angular/Laravel 应用程序 的相关文章

  • 在 Node.js 中生成带条形码的 pdf

    我在用https github com devongovett pdfkit https github com devongovett pdfkit生成 PDF 文件 我可以简单地使用类似的方法 app get get pdf req re
  • 在有限的上下文中运行 JS 代码

    我正在尝试奔跑trusted 隔离 上下文中的 JS 代码 基本上想出了这个方法 function limitedEval src context return function with this return eval src call
  • 在上传之前预览图像 VUEjs [重复]

    这个问题在这里已经有答案了 我知道这个问题已经被问过 但我不知道如何在vuejs中使用代码 我尝试了很多但没有任何结果 我还添加了我的代码 有人可以帮帮我吗 这是我的代码 谢谢 html
  • Javascript 进程是否有多个执行线程?

    背景 我正在创建一个 地址簿 类型的应用程序 有很多条目需要加载 一个想法是首先加载一小部分条目 让用户开始 然后将剩余条目排队 优先考虑用户单击的条目 例如 如果他们单击以 X 开头的名称 请先加载这些名称 然后再处理队列的其余部分 这个
  • 有没有一种方法可以在没有输入的情况下发送表单值

    假设我有以下表格
  • Javascript 将对象推送为克隆

    我将 d3 用于交互式网络应用程序 我需要绑定的数据在交互过程中发生变化 并且由 JSON 变量中的一些选定对象组成 为此 我在 JSON 变量上使用了映射 并进行了一些查询来选择适当的对象 对象被推送到列表中 并且该列表被绑定为新数据 我
  • 我可以在 GWT 中使用第三方 Javascript 库吗

    例如穆工具 用 js 编码对我来说很舒服 但显然不适合所有人 你当然可以 最好的事情就是给自己写一些好看的JavaScript 覆盖类型 http code google com webtoolkit doc latest DevGuide
  • Apache Thrift Java-Javascript 通信

    我正在编写一个基于 Apache Thrift 的 Java 服务器 它将从 Javascript 客户端接收数据 我已经完成了 Java 服务器 但问题是我可以获得 Javascript 客户端的工作示例 我无法找到一个好的示例 构建文档
  • 正则表达式中连字符的这种用法有效吗?

    NB I only想知道它是否是正则表达式定义中未转义连字符的有效应用 它是not关于匹配电子邮件 连字符或反斜杠的含义 量词或其他任何内容的问题 另外 请注意 链接的答案并没有真正讨论转义 未转义连字符之间的有效性问题 通常我会像这样声明
  • 使用 float:left 与 display:inline-block 的 jQuery UI 拖放排序比较

    我这里有两个例子 这两个例子之间的唯一区别是 一种使用display inline block 另一种使用float left li doc item 显示 内联块 与 li doc item float left 我的问题是 displa
  • Chrome --app 相当于 Firefox\IE

    我有一个网络应用程序 客户要求单击不同按钮时更改浏览器窗口大小 我发现在那link https stackoverflow com questions 13436855 launch google chrome from the comma
  • 可以禁用幻灯片的触摸模拟但不能禁用滚动条(危险的滑动器)吗?

    我的页面上有一个危险的滑动器 它成功地模拟了幻灯片和随附滚动条上的触摸事件 允许单击鼠标并移动以向左或向右滑动幻灯片 这很好 但我现在在滑动器内的幻灯片上调用了可拖动 这意味着我需要停止此触摸模拟 拖动幻灯片并同时移动它们会引起混乱 但仅限
  • 从链接打开本地文件夹

    如何通过单击任何链接打开本地文件夹视图 我尝试了很多选择 例如 a href Open folder a or a Open folder a or a Open folder a 解决方案 启动可下载链接 以下内容适用于所有浏览器 但一如
  • ES6 模块范围

    我有代码 lib js var a a export var b b main js console log a a variable is not available in a global scope import b from lib
  • 轮播滑动(未滑动)事件上的火灾事件,Bootstrap 3

    Bootstrap 2 似乎可以很好地处理幻灯片事件 请参阅这个问题 https stackoverflow com questions 9651466 how to attach slide slid events to the boot
  • 了解 Document.createElement()

    我在用着GWT及其底层DOM能力 我基本上想要实现的是 Have a div包含一些文本的元素 其中一些文本将被包围span元素 span 元素可相互拖动并提供上下文菜单 New span元素可以由最终用户动态创建 它可能是这样的 在应用程
  • Firebase + Node.js:错误:找不到 XMLHttpRequest 兼容性库

    Firebase Node js On iOS 安装的 Node js npm 安装 firebase save 节点测试 js 其中 test js 是一个非常简单的连接到 Firebase 的脚本 var firebase requir
  • Google 地图 API - 地图未显示 - 没有错误

    我正在尝试将地图从 Google API 加载到 div 中 但是 地图未加载 并且没有输出任何错误 这是代码 google maps var geocoder map function codeAddress address geocod
  • Angularjs 和 UI-Select:如何从代码中选择选项

    在 AngularJS 中我有一个ui select
  • 如何在 TypeScript 中使用 navigation.replace ?

    我试图在我的代码中使用它 const navigation useNavigation navigation replace AllFriends 但我不断收到错误消息 Property replace does not exist on

随机推荐

  • 如何读取 Perl 变量的根标签和根结束标签?

    我是 Perl 新手 我想将 xml 根标记和根结束标记读取到 perl 变量 我尝试了正常的文件读取 有效 我正在得到第一行和最后一行 但有时 如果没有新的线路 您就不能相信第一条线路 使用正则表达式读取第一行就完成了 但我在 googl
  • 为 go.mod 文件指定 Go 版本

    我正在通过 Heroku 部署应用程序 我愿意git push heroku master 我收到此错误 remote Compressing source files done remote Building source remote
  • Android 的 FragmentTabs 示例中的两个框架布局 Support4Demos

    我对 Android 中的片段不熟悉 我指的是为 supportv4 兼容性库提供的片段演示示例 谁能解释一下为什么有两种框架布局 android id realtabcontent android id tabcontent Androi
  • iPad Safari 视口的高度

    iPad 的视口宽度为 980 像素 高度是多少 在 Safari 中 我们必须添加地址和新的水龙头 Safari 横向模式下的高度是多少 有一个媒体查询可以使网页适合宽度 有没有办法使网页适合高度 以下是答案 你是对的 iPhone iP
  • PostgreSQL 权限授予不可见

    在 PostgreSQL 10 上 我有一个名为tn schema和一个名为tn beta db 我认为是的 尽管我确实必须连接到相关数据库才能查看架构 T jeff nantes 4 sudo su postgres c psql psq
  • lombok对jpa有副作用吗

    我正在努力将 jpa 实体转换为使用 lombok 结果代码如下 Entity Table name TEST Data NoArgsConstructor AllArgsConstructor class Test Column name
  • 如何在javascript中禁用输入文本框上的键盘事件

    我有一个图像 我使用键盘对其进行一些操作 翻译 缩放 在图像上方 我有一个输入文本框 显示数据集中图像的编号 当光标位于文本框上时如何禁用图像操作 即禁用我分配给每个键盘的行为 我还希望仍然能够编辑文本框 例如移动到图像编号 xx 从我在这
  • 如何在WPF中正确刷新自定义形状?

    我创建了一条自定义行 旁边有一些文本 形状是一个子类System Windows Shapes Shape 由于某种原因 当我更改线的坐标时 文本不会刷新 我知道关于InvalidateVisual 方法 但每次我移动元素时 我都必须调用它
  • Xcode 调试:查看 NSNumber 的值?

    是否可以在变量监视窗口中的调试器数据提示中看到 NSNumber 的数值 我在 NSNumber 中存储一个整数值 并希望在调试期间看到该值 我已经在调试器中尝试了一些数据格式化程序 但没有太大帮助 打开调试器视图并在摘要列中输入 int
  • 尝试在 python 中创建 virtualenv 并激活它

    我很难在 Python 中创建 virtualenv 并激活它 我正在研究Windows操作系统 在命令提示符下 我通过输入以下命令安装了 virtualenv pip install virtualenv 然后 为了在其中创建虚拟环境 我
  • 从 Javascript 中的对象列表中提取对象属性

    我从 API 接收到以下对象 2012 12 12 id 1234 type A id 1235 type A id 1236 type B 2012 12 13 id 1237 type A id 1238 type C id 1239
  • 需要一个策略将 Intellij IDEA 项目文件放入 Git 中

    需要一个将 Intellij IDEA 项目文件放入 Git 的策略 主要问题是如果idea项目文件在git中 如何避免分支之间的合并冲突 另一个问题是把它们保存在git中方便吗 如何避免合并 您可以保护某些文件不被合并合并管理器 http
  • SQL Server中的SQL group_concat函数[重复]

    这个问题在这里已经有答案了 如果有一张名为employee的表 EmpID EmpName 1 Mary 1 John 1 Sam 2 Alaina 2 Edward 我需要这种格式的结果 EmpID EmpName 1 Mary John
  • 如何使用 Alpaca 创建必需的条件字段?

    有谁知道如何定义依赖于另一个字段的必填字段 例如如果field1被标记true then field2必须为必填项 否则不应填写字段 2 这是我目前的尝试 field1 title Field1 type string enum true
  • Google Play 商店中的 Android 版本:选择加入 URL 在哪里?

    我正在努力在 Google Play 商店中发布我们的应用程序的私人内部版本 我收到一条消息 显示 当您发布应用程序时 此处将提供选择加入链接 但我不知道还需要做什么来发布我的 alpha 测试 apk 发布状态显示 全面推出 这向我表明一
  • 如何在 Windows 上为 python 3.7 正确设置 pyarrow

    我一直在尝试通过 pip 安装 pyarrow pip install pyarrow 并且 正如 Yagav 所建议的 py 3 7 m pip install user pyarrow 和康达 conda install c conda
  • UIControl 未接收触摸

    我有一个 UIControl 它实现了 Touchs Begin 方法 如下所示 void touchesBegan NSSet touches withEvent UIEvent event super touchesBegan touc
  • ASP.NET MVC 3 对嵌套对象的验证未按预期工作 - 验证子对象两次而不是父对象

    我正在尝试让 ASP NET MVC 3 从复杂的嵌套对象生成表单 我发现了一种意外的验证行为 我不确定这是否是 DefaultModelBinder 中的错误 如果我有两个对象 我们将 父对象 称为 OuterObject 并且它具有 I
  • 具有现有样式表的应用程序的 CSS 框架

    我正在构建一个 chrome 扩展 它将一个小部件之类的东西附加到 Gmail 消息 当用户访问 gmail com 网站时 它会出现在每封电子邮件的下方 类似于 gmail 上下文小工具 我研究了一些在我的应用程序中使用的 css 框架
  • ReferenceError:模块未定义 - Karma/Jasmine 配置与 Angular/Laravel 应用程序

    我有一个现有的 Angular Laravel 应用程序 其中 Laravel 充当仅提供 JSON 数据的 Angular 前端的 API 加载角度应用程序的页面 index php 目前由 Laravel 提供服务 从那时起 Angul