使用 Jasmine 测试 Angular 异步服务

2024-06-08

我正在尝试使用 Jasmine 测试真正的 http 调用(集成测试),但是当我调用使用 $http.get 的方法时,它会超时并且服务器永远不会被调用。

我知道我应该注入 $http 的实现,但不确定应该在哪里发生。

搜索服务

app.service('searchSvc', ['$http', '$q', searchSvc]);
function searchSvc($http, $q) {
  return {
    search: function(text) {
      console.log('svc.search called with ', text); // this does get called 
      return $q.when($http.get('/search/' + text));
    }
  };
}

搜索规范

describe("searchTest", function() {
  var ctrl, svc, $http;

  beforeEach(function () {
      module('testApp');
    inject(function(_$controller_, searchSvc, _$http_){
      ctrl = _$controller_('searchCtrl');
      svc = searchSvc;
      $http = _$http_;
    })
  });

  it('test server search', function(done) {
      svc.search('re').then(function(result) {
        console.log('promise then'); // this never gets called, because server never gets called
        expect(result).not.toBeNull();
        expect(result.data).not.toBeNull();
        expect(result.data.length).toBeGreaterThan(0);

        done();
      });
  });

如果您使用 Promise,您可以在此处了解如何处理它们http://entwicklertebuch.com/blog/2013/10/how-to-handle-angularjs-promises-in-jasmine-unit-tests/ http://entwicklertagebuch.com/blog/2013/10/how-to-handle-angularjs-promises-in-jasmine-unit-tests/

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

使用 Jasmine 测试 Angular 异步服务 的相关文章

  • 使用 jasmine 测试 Express.js

    我正在学习 Node js 和 Express 框架 我是茉莉花的忠实粉丝 所以我想尽可能使用 jasmine 但是 我找不到用 jasmine 测试 Express 的好方法 例如 我应该如何在 app js 中测试路由 如果我在 app
  • 使用 ngSanitize 在 HTML 中注入“ng-click”

    我正在使用 Angular 进行本地化 但我遇到了最后一件事 我有这个 json blob key need to login value You need to a log in a to add an event description
  • AngularJS - 您可以在不修改其核心源代码的情况下重命名服务吗?

    我遇到过这样的情况 我下载了书面服务angular js 并且它工作得很好 但我更愿意在我的代码中将其称为不同的名称 只是为了方便和可读性 这并不是真正的要求 只是一种愿望 我可以在服务的实际源代码中仔细检查并更改它 但这显然会导致各种问题
  • Jasmine/PhantomJs 规格运行程序

    我无法使用 phantomJs 运行测试 吞咽任务 var jasminePhantomJs require gulp jasmine2 phantomjs gulp task test function return gulp src S
  • 将 jquery Ui.ressized() 与 AngularJs 一起使用

    我的模板之一中有一个 DOM 元素 我想使用 jqueryUi 调整其大小 总而言之 我有一个 div 我的模板中名为 test 的元素 除此之外 我还尝试添加脚本来实际在多个位置调整大小 但我已经完全扭转了局面 我一度认为指令可能是正确的
  • Protractor Internet Explorer 缓慢

    我一直在尝试让 Internet Explorer 11 在 Protractor 下运行 以完成我为新的 AngularJS 项目进行的一套测试 我在 Windows 7 64 位下运行 并已下载并安装了 64 位的 Selenium I
  • HTML css 表未对齐列

    我尝试在 AngularJS 中创建一个带有粘性页眉和页脚的表格 我已经成功做到了 这是一个笨蛋演示 https plnkr co edit NJenZui4atfdbdrjYz5S p preview和代码 table class tab
  • 使用 AngularJS“copy()”避免引用问题

    我正在显示一个项目列表 每个项目旁边都有一个 编辑 按钮 单击可打开 Angular ui 模式窗口 用户可以更改特定项目的某些属性 现在 让我烦恼的是 当在此编辑窗口中输入内容时 项目列表中的特定项目立即反映了更改 我只希望它在用户单击模
  • Angular ng-repeat 导致闪烁

    我正在使用以下代码显示缩略图列表 div class channel img class channel img div 在控制器中 我有一个 ajax 请求 它可以获取新的缩略图 因此 Angular 会更新图像 但会导致闪烁 有没有办法
  • AngularJS 控制器内的函数

    我有一个代码片段 其中有一个 Angular 模块化控制器 但同一控制器内有一个函数并带有一个调用 这让我怀疑 Javascript 或 Angular 是否允许这种编码方式 如果是 那么它如何读取它 请参阅我的以下代码格式 obj con
  • 不使用 data-* 前缀的自定义 HTML 属性是否有效? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么 jQuery 的 Promise 有 did(),而 Mozilla 记录的 Javascript 的 Promise 却没有?如果我想在 JS 中有一个 did() 该怎么办?

    Mozilla 的 JavaScript 文档的 Promise 之间有什么区别 请参阅API page https developer mozilla org en US docs Web JavaScript Reference Glo
  • 量角器中的“$”选择器

    我见过很多这样的例子 selector 我也在用这个 那么这又是什么 变量确实如此 这是我从量角器得到的docs https angular github io protractor api view ElementFinder proto
  • cookie 未在跨域上设置 - AngularJS 和 NodeJS/Express

    跨域请求时未设置 cookie 我的服务器在 localhost 8000 中运行 客户端在 localhost 9000 中运行 服务器nodejs express上的cors设置是 app use function req res ne
  • Angular ui 路由器状态 - 具有相同模板和控制器的多个状态

    我使用 Angular ui 路由器状态提供程序在 AngularJS 应用程序中定义了如下状态 而且 我想用相同的配置定义多个状态 即 使用相同的模板和控制器 stateProvider state parent templateUrl
  • 并行运行 Angular 和 AngularJS 框架

    我找到了描述如何将 Angular 2 组件集成到 AngularJS 中的资源 但所有这些都涉及像 Angular 项目一样设置 AngularJS 项目 需要 TypeScript 的转译器 需要 ES6 需要 import 语句 我想
  • Spring 和 Angular JS

    我正在使用 Spring 和 Angular JS 开发一个应用程序 但我不知道我所做的是否正确 在同一个 Maven 项目中 我做了 一个用户类 然后我创建了一个 RestController 在其中创建了我的 webservice 在
  • 如何测试 AngularJS 指令

    我正在开发一个将使用 AngularJS 的 Rails 3 2 应用程序 我可以让 Angular 做我需要的事情 但我很难弄清楚如何测试我正在做的事情 我正在使用guard jasmine 使用 PhantomJS 运行 Jasmine
  • 更改 Angular 模型以更新 Kendo

    我一直在一个项目中使用 Angular 最近才发现 Kendo Angular 项目位于http kendo labs github io angular kendo http kendo labs github io angular ke
  • 如何在一页/url 上执行 angularjs 多步骤/向导表单

    我试图找出 AngularJS 中合理的方法来创建一个由多个步骤 即向导 组成但链接到一个页面 URL 的函数 来自一个步骤的数据必须将数据发送到下一步 或与之共享数据 要点是 url 应保持不变 即http mydomain myapp

随机推荐

  • 删除 CSS Transitionend 事件侦听器不起作用

    我在尝试删除 css Transitionend 事件侦听器时遇到问题 我可以添加监听器 e addEventListener transitionend function event transitionComplete event pr
  • python中终止进程的跨平台方法

    当我尝试使用 subprocess Popen terminate 或 Kill 命令终止 Windows 中的进程时 出现访问被拒绝错误 如果文件不再存在 我真的需要一种跨平台的方式来终止进程 是的 我知道这不是做我正在做的事情的最优雅的
  • PyGTK TreeView 中的自动换行

    如何在 PyGTK TreeView 中自动换行文本 gtk TreeView 中的文本是使用 gtk CellRendererText 渲染的 文本换行归结为在单元格渲染器上设置正确的属性 为了让文本换行 您需要设置wrap width单
  • 设置外部应用程序焦点

    在 VB NET 中 您可以使用以下命令将焦点设置到外部应用程序 AppActivate Windows Name or AppActivate processID As Integer 现在 如果您这样做 则效果很好 Dim intNot
  • (Nand2tetris CPU)每个时钟周期发生(什么/多少)?

    在此基础上Nand2俄罗斯方块 https www coursera org learn build a computer lecture gjhcz unit 5 5 project 5 overviewCPU 如下图 我想了解一下 每个
  • Android中如何使用ScrollView?

    我有一个 XML 布局文件 但文本超出了屏幕尺寸 我需要做什么才能制作ScrollView
  • 有没有办法在温莎城堡显式注册开放通用装饰器

    我在我正在开发的项目中经常使用温莎城堡 并使用一些装饰器 所以我的安装程序中可能有类似的东西 Component For
  • 如何在按回车键时以编程方式关闭 iOS 键盘

    我创建了一个UITextField以编程方式制作UITextFieldviewController 的属性 我需要通过回车和触摸屏幕来关闭键盘 我能够让屏幕触摸关闭 但按回车键不起作用 我已经了解了如何使用故事板以及通过分配和初始化来做到这
  • 需要 php pdo 内爆数组并在 mysql 中插入多行

    基于this https stackoverflow com questions 4629022 how to insert an array into a single mysql prepared statement w php and
  • JavaScript 中的自定义“确认”对话框?

    我一直在开发一个使用自定义 模式对话框 的 ASP net 项目 我在这里使用吓人引号 因为我知道 模式对话框 只是我的 html 文档中的一个 div 它被设置为出现在文档其余部分的 顶部 而不是真正意义上的模式对话框 在网站的许多部分
  • 如何为 chrome 和 ie favicon(加载指示器)设置动画

    我的 PM 有一个要求 将图标更改为动画加载图像 仅当我将 link href 指向 gif 文件时 它才适用于 Firefox 我做了一些研究 发现 chrome 不支持动画图标 但wiki https en wikipedia org
  • PHP file_get_contents() 和设置请求标头

    使用 PHP 是否可以发送 HTTP 标头file get contents 我知道您可以从您的php ini文件 但是 您是否还可以发送其他信息 例如HTTP ACCEPT HTTP ACCEPT LANGUAGE and HTTP CO
  • iter(fp.readline, '') 中的行而不是 fp 中的行:

    我读了内置函数iter的例子在内置函数 Python 3 7 0 文档 https docs python org 3 library functions html iter with open mydata txt as fp for l
  • 如何提高 Guice 启动时的性能

    好吧 我知道我的计算不客观等等 但无论如何 我讨厌在执行单元测试时等待这么多时间 我的 guice swing 应用程序需要大约 7 秒来初始化 这是一个简单的 IRC 客户端 在那一刻 没有打开连接 我什至还没有调用任何 java io
  • Vi/vim - 从末尾行删除,包括最后一个字符

    我想做类似这个问题的事情VI VIM 删除 更改从右到左 https stackoverflow com q 9154212 301527即从行尾删除到该行中 的最后一个实例 这可以使用dT 将光标放置在该行的末尾 然而 这个命令和其他这样
  • 适用于 Windows 的类似 RapidWeaver 的编辑器 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在看到一位朋友使用 RapidWeaver 并通过几次点击产生了美妙的结果后 我感到惊讶 并开始搜索是否
  • Twitter bootstrap 3 RC2 - IE8 中的导航不起作用

    我正在使用 Twitter Bootstrap 3 RC2 在页面顶部创建一个导航栏 除了在 IE8 中之外 该导航栏工作正常 在 IE8 中 就像浏览器变小一样 因此菜单会折叠以供移动视图使用 但这种情况并非如此 现在我知道 TB3 仍在
  • 两个 mysql_fetch_array 语句

    是否有任何原因导致我无法在一个 while 循环中包含两个处理两个不同 mysql 查询结果的 mysql fetch array 语句 原因是我有两个来自 mysql 数据库的查询结果 每个结果包含两列 如下所示 Query 1 Date
  • matplotlib 中矩形面片之间存在不需要的空间

    以下代码绘制两个红色矩形 红色矩形应该彼此相邻 之间没有空间 在 python 图中 这是可以的 在导出的 pdf 中 矩形之间有一个细长但明显的空白 有什么方法可以解决这个问题吗 import matplotlib pyplot as p
  • 使用 Jasmine 测试 Angular 异步服务

    我正在尝试使用 Jasmine 测试真正的 http 调用 集成测试 但是当我调用使用 http get 的方法时 它会超时并且服务器永远不会被调用 我知道我应该注入 http 的实现 但不确定应该在哪里发生 搜索服务 app servic