角度测试 - 可观察管道不是函数

2024-04-22

我想为照片上传方法编写一个单元测试。但我明白了Failed: this.task.snapshotChanges(...).pipe is not a function TypeError: this.task.snapshotChanges(...).pipe is not a function Error.

为了简单起见,我将代码全部放在一个方法中:

成分

  public startUpload(event: FileList) {
    const file: File = event.item(0);
    const pathRef = `users/${this.uid}`;

    this.task = this.service.uploadPhoto(pathRef, file);
    this.fileRef = this.service.getFileReference(pathRef);
    this.percentage = this.task.percentageChanges();
    this.snapshot = this.task.snapshotChanges();
    this.task.snapshotChanges().pipe(last(), switchMap(() => // it fails here - need to propperly mock this
    this.fileRef.getDownloadURL()))
      .subscribe(url => this.service.updatePhoto(url));
  }

组件规格

  it('should upload file', async(() => {
    const supportedFile = new File([''], 'filename.png', {type: 'image/', lastModified: 2233});
    const fileList = {
      item: () => {
        return supportedFile;
      }
    };
    const spy = (<jasmine.Spy>serviceStub.uploadPhoto).and.returnValue({
      percentageChanges: () => of(null),
      snapshotChanges: () => {
        return {
          getDownloadURL() {
            return of(null);
          }
        };
      }
    });

    component.startUpload(<any>fileList);

    expect(spy).toHaveBeenCalledWith(`users/${component.uid}`, supportedFile);
  }));

单元测试正常工作的解决方案是添加以下行:(<jasmine.Spy>service.getFileReference).and.returnValue({ getDownloadURL: () => of(null) });

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

角度测试 - 可观察管道不是函数 的相关文章

  • Angular4 - 滚动到锚点

    我正在尝试对同一页面上的锚元素进行简单的滚动 基本上 用户点击 尝试 按钮 它就会滚动到页面下方 ID 为 登录 的区域 现在 它正在与一个基本的id login a href login a 但它正在跳转到该部分 理想情况下 我希望它滚动
  • 如何在 RxJS 订阅方法中等待

    在 RxJS 主题的订阅回调内部 我想要await on an async功能 下面是打字稿转译器抱怨的代码示例 错误 131 21 TS2304 找不到名称 await async ngOnInit this subscriber dat
  • ngrx 存储是否持久?

    ngrx 存储是否持久 换句话说 我们可以关闭浏览器重新打开它 并检索添加到ngrx 商店 https github com ngrx platform 目前 ngrx store 不支持此类功能 但是您可以通过使用类似的库来维护状态ngr
  • 如何测试包含自定义表单控件的组件?

    我有一个这样的组件 Component selector app custom form control templateUrl
  • 如何在 TypeScript 中禁用/抑制库中的错误?

    我打开了一些编译器开关来报告代码中的更多问题 例如严格的空检查 但我在使用的库中遇到了数十个错误 例如 default xxx node modules angular core src util decorators d ts 11 5
  • 元素不适应 Firefox 上的

    使用 ES6 ish D3js 模块运行 Angular 6 应用程序会导致 Firefox 出现问题 Chromium Chrome Safari 和 IE Edge 工作正常 伪代码看起来类似于 生产代码可以在下面找到
  • Angular 2+ 源代码中的 ɵ(类似 Theta)符号

    在深入研究 Angular 4 3 源代码后 我经常遇到 符号 例如 在异步管道源 https github com angular angular blob 4 3 2 packages common src pipes async pi
  • 茉莉花单元测试 - 测试对象的未定义属性

    我有以下声明 expect A BAR name toEqual foo 由于我的对象 A 具有顶级属性 BAR 并且 bar 具有值 foo 传递 我想测试我的结构以确认属性 NONEXISTINGPROP 尚未定义 例如 expect
  • 类型“boolean”不可分配给类型“Observable

    我有那个代码 method Observable
  • 观众:覆盖单个测试的提供者(角度通用)

    我构建了一个小型角度应用程序 现在正在编写单元测试 到目前为止一切顺利 但是当我尝试测试我的 authGuard 时 我遇到了一些问题 我在用观众 https github com ngneat spectator 我在规范的提供者部分中提
  • 使用 facebook 共享动态更新元标签 - Angular 6

    我需要动态更新元标记 如 og title og description 和 og image 并在 facebook 上共享相同的内容 我已经尝试了所有方法 但没有任何效果 首先 我尝试使用 javascript 设置元标记 如下所示 v
  • Angular firestore 查询 firestore 文档

    我有以下查询 selectedUser AngularFirestoreDocument
  • 如何在ionic 2中创建覆盖页面?

    当我进入新页面时如何创建透明的引导覆盖页面 我如何在 ionic 2 中实现 您可以在外部创建 div
  • 如何更改 Angular Material 选择中的滚动条样式?

    我们需要帮助来更改 Angular Material 的 Select 组件中的滚动条 实现了以下演示 https stackblitz com angular bxbvndrpogl file app 2Fselect reset exa
  • Jasmine-jQuery loadFixtures 未定义

    我对整个茉莉花的事情仍然很陌生 在过去的几个小时里我陷入了这个问题 我尝试使用 loadFixture 加载外部夹具文件 我使用 Jasmine 2 0 0 和 Jasmine jQuery 2 0 5 ReferenceError loa
  • Angular with/Angular Material - 对话框主题损坏

    您好 我遇到了 Angular Material 主题在对话框组件中中断的问题 其中文本和其他组件的颜色未按应有的方式工作 在 app component 中 我有一个设置图标按钮来打开对话框 main settings dialog 但当
  • FakeAsync/tick (Async/whenStable) 与 detectorChanges()

    您能帮我区分这两件事吗 根据我的理解 如果你只使用 observable 你可以使用 detectorChanges 因此 您可以直接更改组件属性或监视服务调用并返回可观察的值 然后调用 detectorChanges 更改将在 html
  • Angular 5 Http拦截器刷新JWT令牌

    我已经实现了令牌保存 检索的逻辑 并且我也有刷新调用 问题是 当我在 HttpInterceptor 中拦截 403 时 同时进行的其他调用也会刷新令牌 我很乐意保留这些调用 直到我的令牌刷新为止 创建我所说的请求 信号量 Injectab
  • 如何在 Angular 项目中使用 Bootstrap?

    我开始我的第一次Angular应用程序和我的基本设置已完成 我怎样才能添加引导程序我的申请 如果您可以提供一个示例 那么这将是一个很大的帮助 如果您使用Angular CLI要生成新项目 还有另一种方法可以使 bootstrap 可访问角度
  • Angular Libraries Monorepo:是否可以为每个库使用不同的版本?

    只是一个简单的问题 我似乎找不到答案 我正在尝试构建一个应该能够使用 angular cli v8 的 monorepo 但仍然能够编译和构建为 v2 v3 v4 等制作的库 主要是组件和服务 版本之间发生了很多变化 所以让我们举个例子 V

随机推荐

  • 在哪里可以找到有关重构的资源? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 重构是改进现有系统设计而不改变其行为的过程 除了马丁 福勒的开创性著作 重构 改进现有代码的设计 ht
  • ASP.NET Webforms 应用程序有时无法加载,直到 cookie 被删除

    我正在我的 Windows 7 PC 上开发 ASP NET 4 Webforms 应用程序 我正在运行VS2010和IIS7 5 我有一个奇怪的问题 在加载几个页面 从 1 到 20 左右 后 我没有从 IIS 得到任何响应 我什至无法在
  • 从 Java 应用程序发送陷阱

    从 Java 应用程序发送陷阱的最快捷 最简单的方法是什么 提前致谢 I use SNMP4J http www snmp4j org 为了这 This http www snmp4j org doc org snmp4j Snmp htm
  • 如何在 Angular 2 中使用量角器?

    我将 Protractor 与 Angular 1 x 一起使用 我想逐步迁移到 Angular 2 0 但我没有看到 Protractor在文档中 https angular io docs ts latest testing 从 Ang
  • 警告:“声明似乎没有效果”[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 PyCharm 以黄色突出显示我的代码并发出警告 悬停时 它说 声明似乎没有效果 有人可以解释一下这是什么意思吗 您需要一个等号 赋值给pu
  • 使用 istream (std cin):防止 Windows 上的“[输入] 未被识别为...”

    我有一个具有命令行功能的 Qt gui 应用程序 为了使这项工作正常进行 我将其添加到了顶部main 功能 ifdef WIN32 if AttachConsole ATTACH PARENT PROCESS freopen CONOUT
  • Flutter - firebase FCM 消息根本不适用于 Testflight 版本构建

    Preface 我的应用程序基于 Flutter 但需要本机代码实现才能使 FCM 消息正常工作 请参阅下文了解更多详细信息 GitHub问题 154 https github com ConnectyCube connectycube f
  • 如何实现 JSR 规范

    我正在考虑实现一两个 JSR API 我还没有阅读整个规范 计划是在编写实现代码时阅读它们 但我对它们非常熟悉 我读到 JSR 流程包括实现测试兼容性工具包 TCK 以测试所述 JSR 实现 在我开始编写一堆单元测试来验证我的实现的正确性
  • 视频swf的php正则表达式

    我想从对象 嵌入 html 源获取视频 url 我读到我可以使用正则表达式来获取它 但我和正则表达式不是朋友 这就是我所拥有的
  • 二进制串口读取c中丢失的字节

    我正在将二进制数据从 arduino 发送到运行此代码的串行端口 在十六进制模式下使用cutecom可以清楚地读取我对该串行端口的期望 如下所示 00000000 24 04 85 ab 47 43 04 04 24 04 85 ab 47
  • E/未知:React:本机调用中出现异常

    我通过模拟器运行 Android 应用程序 但出现了如下错误 不知道如何修复它 有知道解决办法的人吗 请帮忙 thanks E unknown React Exception in native call java lang Runtime
  • PHP 中的 if (\false) (是的,带反斜杠)是什么意思?

    今天早上 我接到通知 有一个新的Twig 扩展 https github com twigphp Twig extensions发布可用 耶 在将其集成到之前树枝小提琴 https twigfiddle com 我想看changes htt
  • keycloak 令牌自省总是失败并显示 {"active":false}

    我有点急于让这件钥匙斗篷发挥作用 我可以进行身份 验证 但由于某种原因 我的令牌内省总是失败 例如 如果我尝试进行身份验证 curl d client id flask api d client secret 98594477 af85 4
  • 从本地路径加载图像并将其绘制在画布上

    我想在画布上绘制图像 其中图像源将由用户动态设置 在尝试设置图像的 src 时出现以下错误 不允许加载本地资源 file D My 20Picsb jpg 有没有办法从本地驱动器加载文件以将它们绘制在画布上 var img new Imag
  • 将当前过滤器选择提供给 Django 中的另一个自定义 SimpleListFilter

    我正在尝试更改一个过滤器的提示 以响应另一个过滤器中所做的当前选择 我非常不知道如何将 AttributeCategoryFilter 的当前选定值传递到 AttributeFilter 中 我正在使用 Django 1 4 dev 试图弄
  • 从整数数组中删除重复项

    我在编码时遇到问题 编写一个名为的静态方法removeDuplicates它接受一个整数数组作为输入 并返回一个删除了所有重复项的新整数数组作为结果 例如 如果输入数组包含元素 4 3 3 4 5 2 4 则结果数组 应为 4 3 5 2
  • BitTorrent 磁力链接如何工作?

    我第一次使用磁力链接 http en wikipedia org wiki Magnet URI scheme 我很好奇它是如何工作的 因此查阅了规格 但没有找到任何答案 维基百科说xt表示 确切的主题 后跟格式 btih在本例中 使用 S
  • 如何注销会话 MVC Razor Visual Studio

    我正在尝试从 MVC Razor 中的会话注销 这是我目前 MainController 中的内容 HttpPost public ActionResult Login Users user if ModelState IsValid if
  • JSON 对象必须是 str、bytes 或 bytearray,而不是 dict

    在Python 3中 要加载之前保存的json 如下所示 json dumps dictionary 输出是这样的 Hello 6 Hi 5 当我使用 json loads Hello 6 Hi 5 它不起作用 会发生这种情况 TypeEr
  • 角度测试 - 可观察管道不是函数

    我想为照片上传方法编写一个单元测试 但我明白了Failed this task snapshotChanges pipe is not a function TypeError this task snapshotChanges pipe