如何使用 Jasmine 监视匿名函数

2024-02-05

我正在使用 Jasmine 来测试我的角度应用程序,并希望监视匿名函数。 使用角度通知服务https://github.com/cgross/angular-notify https://github.com/cgross/angular-notify,我想知道notify函数是否被调用。

这是我的控制器:

angular.module('module').controller('MyCtrl', function($scope, MyService, notify) {

  $scope.isValid = function(obj) {
    if (!MyService.isNameValid(obj.name)) {
      notify({ message:'Name not valid', classes: ['alert'] });
      return false;
    }
  }
});

这是我的测试:

'use strict';

describe('Test MyCtrl', function () {
  var scope, $location, createController, controller, notify;

  beforeEach(module('module'));

  beforeEach(inject(function ($rootScope, $controller, _$location_, _notify_) {
    $location = _$location_;
    scope = $rootScope.$new();
    notify = _notify_;

    notify = jasmine.createSpy('spy').andReturn('test');

    createController = function() {
      return $controller('MyCtrl', {
        '$scope': scope
      });
    };
  }));

  it('should call notify', function() {
    spyOn(notify);
    controller = createController();
    scope.isValid('name');
    expect(notify).toHaveBeenCalled();
  });
});

明显的回报:

Error: No method name supplied on 'spyOn(notify)'

因为它应该类似于spyOn(notify, 'method'),但由于它是一个匿名函数,所以它没有任何方法。

感谢您的帮助。


Daniel Smink 的答案是正确的,但请注意 Jasmine 2.0 的语法已更改。

notify = jasmine.createSpy().and.callFake(function() {
  return false;
});

我还发现,如果您只需要一个简单的实现,那么直接返回响应很有用

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

如何使用 Jasmine 监视匿名函数 的相关文章

  • Android 上的 setTimeOut() 相当于什么?

    我需要等效的代码setTimeOut call function milliseconds 对于安卓 setTimeOut call function milliseconds 您可能想查看定时任务 http developer andro
  • 如何处理 Protractor 中的模态对话框?

    我正在尝试使用sendKeys 在模态对话框上this http www gifteng com login网站 单击后出现此对话框Sign In按钮 我似乎找不到任何方法将焦点切换到盒子上 请参阅gist https gist githu
  • Hamcrest 泛型地狱 #2:iterable With Size 给出错误“不适用于参数”

    在 hamcrest 中 1 3 RC2 没有 JUnit 依赖项 我使用失败iterableWithSize 我有一个 扩展 Iterator参数化为Content像这样EndResult
  • 当列表包含图像时,React Native FlatList 感觉很慢

    我为 avater 使用 64x64 图像 它的尺寸非常小 通过我的应用程序 滚动时帧率下降至 25 35 fps 如何优化 flatList 图像
  • Mocha / Chai Expect.to.throw 未捕获抛出的错误

    我在获取 Chai 时遇到问题expect to throw测试我的 node js 应用程序 测试在抛出的错误上不断失败 但是如果我将测试用例包装在 try 和 catch 中 并对捕获的错误进行断言 它就会起作用 Does expect
  • Internet Explorer 的数组indexOf 实现

    有很多关于如何将 indexOf 实现放入数组原型中以便它可以在 Internet Explorer 下工作的解决方案 但是我偶然发现了一个问题 到目前为止我所看到的任何地方似乎都没有解决这个问题 使用非常一致的MDC 的实施 https
  • 如果只有一个元素发生变化,为什么 AngularJs 会更新数组/哈希映射的所有元素?

    我有一个简单的哈希图和一个以文本形式显示状态的简单方法 但是当我仅更新 1 个用户状态时 所有这些状态都会更新 为所有用户调用函数 有没有一种方法可以只更新一个元素而不是全部 示例代码在这里 只需看看当您单击 更改状态 按钮时控制台中会发生
  • 与玻璃钢战斗

    我读过有关 FRP 的内容 非常兴奋 它看起来很棒 因此您可以编写更多高级代码 并且一切都更加可组合 等等 然后我尝试用数百个 sloc 从纯 js 到 Bacon 重写我自己的小游戏 我发现 我实际上不是编写高级纯逻辑代码 而是击败了 B
  • 更改导航栏悬停时 div 的背景图像

    我正在开发一个项目 我对 Javascript 很陌生 所以我想知道是否有 Jquery 代码或只是一个关于如何使背景图像在导航菜单悬停时更改的过程 例如将鼠标悬停在链接一上会将 div 的背景图像更改为图像 1 将鼠标悬停在链接二上会将
  • 单元测试 Bash 脚本

    我们的系统除了 Java 代码之外还运行一些 Bash 脚本 既然我们正在努力测试所有可能损坏的东西 并且那些 Bash 脚本可能会损坏 我们想测试它们 问题是很难测试 Bash 脚本 有没有测试 Bash 脚本的方法或最佳实践 或者我们应
  • 调整发散堆积条形图以使用通用更新模式

    我一直在使用可用的堆积条形图示例here https bl ocks org mbostock b5935342c6d21928111928401e2c8608使用以下代码 var data month Q1 2016 apples 384
  • 如何为 chrome 和 ie favicon(加载指示器)设置动画

    我的 PM 有一个要求 将图标更改为动画加载图像 仅当我将 link href 指向 gif 文件时 它才适用于 Firefox 我做了一些研究 发现 chrome 不支持动画图标 但wiki https en wikipedia org
  • 使用 Jasmine 测试 Angular 异步服务

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

    我阅读了 Javascript 提升的概念 它非常令人困惑 但我看到了一些示例并了解了提升的实际作用 所以基本上 提升是 JavaScript 的默认行为 即将所有声明移动到当前作用域的顶部 当前脚本或当前函数的顶部 但我无法理解以下实现
  • 如何停止和重新启动 Android 仪器测试中的活动?

    我正在尝试编写一个停止的 Android 活动仪器测试 onPause then onStop 并重新启动当前活动 我试过 activity finish activity getActivity 但这似乎不能正常工作 测试的目的是断言表单
  • 在没有全局变量的情况下对多个事件使用 Promise 回调

    我有一个包含在函数中的承诺 我将使用不同的输入参数多次调用该函数 每次承诺解决时 我都会将解决的值推送到存储数组中 当我所有的调用承诺都得到解决后 我将在其他函数中使用这个存储数组 是否有任何干净的方法可以在不使用 全局 变量的情况下进行设
  • 如何使用 jQuery AJAX 和 JSON 通过 Bootbox 确认表单提交

    我正在使用一个网络应用程序工作Spring MVC 我试图在提交表单之前显示一个确认对话框Bootbox 但我收到 500 内部服务器错误 这是我的表格
  • 如何使用 Browserify 获取 html 模板

    我正在尝试找出一种简单的方法 在脚本中需要 html 模板 然后从 CLI 运行 browserify 假设我想获取一个模板并将其附加到正文中 index js var template require template html docu
  • 内联 YouTube 视频在 iOS 上的 cordova 应用程序中不起作用

    我用 cordova 开发了一个移动应用程序 我确实需要能够播放内联 YouTube 视频 我尝试了一段时间来解决它 我设置了属性playsinline to 1在 YouTube iframe API 中 I put
  • jQuery 存储类型未定义

    我用了一个jQuery 存储 https ui5 sap com api jQuery sap storage存储数据 oStore jQuery sap storage jQuery sap storage Type local oSto

随机推荐

  • 对于较新的编译器,使用 std::async 的默认启动策略是否更好?

    众所周知 使用默认启动策略可能会导致延迟执行std async 参见示例C 编译器如何在 std async 的延迟执行和异步执行之间进行选择 https stackoverflow com questions 46102206 how d
  • 远程 Watir-Webdriver IE 表单字段无法识别文本和按键

    我一直在使用黄瓜 Watir Webdriver用IE就好了 在我的测试中 我转到表单字段并输入数据 然后单击保存按钮 所有动作都效果很好 最近我决定去硒网格2出于性能原因在机器上分配测试 它在 FF 和 Chrome 上运行得很好 但我开
  • Keras 不使用 fit_generator() 进行训练

    我正在使用 Keras 2 0 4 TensorFlow 后端 执行图像分类任务 我正在尝试训练我自己的网络 没有任何预训练参数 由于我的数据很大 我无法将所有数据加载到内存中 为此我使用ImageDataGenerator flow fr
  • Apache PDFBox:如何指定要输出的文本的位置

    所以基本上我已经实现了在特定位置生成 pdf 时创建文本 但现在我的问题是 如何处理位于不同位置的文本 预期生成的 PDF contentStream setLeading 15 contentStream newLineAtOffset
  • 如何使用 numpy 创建线性间隔点的数组?

    我正在尝试使用 numpy 创建一个等距点的数组 如下所示 array 0 0 05263158 0 10526316 0 15789474 0 21052632 0 26315789 0 31578947 0 36842105 0 421
  • 为什么 Integer 类缓存值在 -128 到 127 范围内?

    关于我之前的问题 为什么 与 Integer valueOf String 的比较对于 127 和 128 给出不同的结果 https stackoverflow com questions 20877086 confusion in me
  • 在opencv中加载svg图像

    我正在尝试下载 svg 图像并将其打开opencv https opencv org 以便进一步加工 我正在做的是将 svg 格式转换为 png 格式cairosvg https cairosvg org 使用打开它Pillow https
  • 默认情况下,弹性搜索的最大和最小日期是多少?

    Intro 我们有一个类注释为 Document有日期字段 E g Document indexName notif index type notif type shards 1 replicas 0 refreshInterval 1 p
  • Swift:从 iOS 7 编译 Archive 时出现分段错误

    我一直遇到这个问题 所以我开始用 Swift 创建一个新的单视图应用程序 适用于 iPhone 和 iPad 当目标是 iOS 8 1 时 一切正常 但如果我设置 iOS 7 1 或 7 则会出现分段错误 当我转到 产品 gt 存档 时 当
  • Centos+Apache+passenger+rails:从 www 文件夹运行 Rails 应用程序

    我正在尝试学习 Rails 所以我是新手 希望得到一些帮助 我试图同时运行多个应用程序 但遇到了一个奇怪的问题 当我尝试用 Rails 生成东西时 它给了我一个权限错误 我浏览了 stackoverflow 和其他几个网站 但没有找到任何好
  • 适用于 Foundry 中的业务/最终用户的电子表格上传

    Foundry 是否具有对将电子表格 相同架构 上传和附加到一个数据集的本机支持 并具有适合业务 最终用户的界面 我正在评估一个用户工作流程 其中涉及临时接收表格电子表格并使用常规编程方法附加它们 我正在尝试在 Foundry 中启用此工作
  • 从 XPages 全局删除 Dojo

    At http www dominoguru com pages 11182010085538 html http www dominoguru com pages 11182010085538 html and http dpastov
  • 限制 python 脚本位置

    我想知道是否有一种方法可以控制 python 脚本的运行位置 这样Python就只允许运行某些位置的脚本 我们正在运行带有 Windows 域控制器的 Windows 环境 原因是作为在具有严格安全要求的环境中锁定 python 的一步 给
  • Python 中 dict 类的动态运算符重载

    我有一个类可以动态重载基本算术运算符 如下所示 import operator class IshyNum def init self n self num n self buildArith def arithmetic self oth
  • 错误:ADB 退出,退出代码为 1 执行流式安装

    我在运行时收到以下错误flutter run然而 在某些项目上 在其他项目上它工作得很好 base Nusraths MacBook Pro flutter uber clone rahama flutter emulators launc
  • android webview 的自定义字体

    我在我的应用程序中使用 webview 我想使用自定义字体以波斯语显示文本 我将字体放在 asset 文件夹中 并编写了一种在 webview 中放置文本的方法 但在不支持波斯语的 api8 中 它显示未知字符而不是我的文本和支持波斯语的
  • 对不是 的直接子级的输入显示选项卡表单验证

    当未聚焦的选项卡出现验证错误时 选项卡标题应显示为红色 相反 当未聚焦的选项卡出现验证错误时 选项卡标题不会给出任何错误指示 当我使用子组件时会发生此问题 如果所有组件都是在创建 编辑级别定义的 则该选项卡将按预期变为红色 但如果存在嵌套组
  • dcast 重命名所有变量以数字开头

    所以我得到的数据如下所示 id year principal interest 1 011000600 2013 0 00 0 00 2 011000600 2014 544 03 0 00 3 011000700 2013 0 00 0
  • Java - 如果随后定义了 actionPerformed,JButton 文本就会消失

    这已经困扰我一段时间了 如果我定义setText在 JButton 上before定义setAction 文本消失 JButton test new JButton test setText test Before disappears t
  • 如何使用 Jasmine 监视匿名函数

    我正在使用 Jasmine 来测试我的角度应用程序 并希望监视匿名函数 使用角度通知服务https github com cgross angular notify https github com cgross angular notif