小编Jon*_*old的帖子

角度测试 - 如果计时器处于组件初始化状态,则勾选不起作用

问题

我该如何开始tick工作,或者至少如何让测试提前 10 秒以正确调用submit我的组件?

注意:我不想这样做,await new Promise(r => setTimeout(r, 10000))因为这会让我的测试运行很长,而测试应该很短

目标

我只想在组件创建 10 秒后submit调用cb

描述

我的组件中有一个计时器,它在 10 秒后完成。该定时器将主题由假变为真,用于判断组件中提交数据是否有效

在测试中,tick计时器似乎根本没有提前,实际上运行了整整 10 秒。我试图通过在创建组件时添加一个来解决这个问题,fakeAsyncbeforeEach没有成功。

我尝试过的

  • 在测试组件init中使用fakeAsync,以及测试
  • fakeAsync仅在测试中使用
  • 使用setTimeout(() => this.obs.next(true), 10_000)而不是计时器
  • 使用empty().pipe(delay(10000)).subscribe(() => this.obs.next(true));而不是计时器
  • 放入timer代替ngOnInit构造函数
  • timerin 构造函数而不是ngOnInit

观察结果

如果你调整这段代码

    timer(10_000).subscribe(() => this.testThis$.next(true));
Run Code Online (Sandbox Code Playgroud)

改为这样

    timer(10_000).subscribe(() => {
      debugger;
      this.testThis$.next(true)
    });
Run Code Online (Sandbox Code Playgroud)

您会发现,每次运行测试时,开发工具中的 Javascript 调试器都会在组件创建后 10 …

testing timer typescript angular

4
推荐指数
1
解决办法
2890
查看次数

什么是可接受的glPolygonMode第一个参数值?

glPolygonMode的文档仅将枚举指定GL_FRONT_AND_BACK为可接受的第一个参数(face).还有其他可接受的枚举,例如只有正面还是只有背面?

glPolygonMode(GLenum face, GLenum mode);
Run Code Online (Sandbox Code Playgroud)

我知道,mode只有支持GL_POINT,GL_LINE以及GL_FILL,但它只是似乎非常奇怪的是,只有一个文件指定faceGL_FRONT_AND_BACK,但它是用它作为参数的要求.

opengl

3
推荐指数
1
解决办法
162
查看次数

标签 统计

angular ×1

opengl ×1

testing ×1

timer ×1

typescript ×1