小编Jol*_*boy的帖子

如何在 kotlinx.coroutines.test.runTest 中使用 kotlinx.coroutines.withTimeout?

我有一个挂起函数,可以对外部 API 进行休息调用,我希望该函数在 1 分钟后超时。

suspend fun makeApiCallWithTimeout(): List<ApiResponseData> =
   withTimeout(1.minutes) {
      apiCall()
   }
        
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 Junit5 和 kotlinx.coroutines.test 1.6.0 对其进行测试,如下所示:

@Test
fun `Test api call`() = runTest {
   val responseData = "[]"
   mockWebServer.enqueue(mockResponse(body = responseData)
   val result = sut.makeApiCallWithTimeout()
   advanceUntilIdle()
   assertEquals(0, result.size)
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到如下错误:

Timed out waiting for 60000 ms
kotlinx.coroutines.TimeoutCancellationException: Timed out waiting for 60000 ms
    at app//kotlinx.coroutines.TimeoutKt.TimeoutCancellationException(Timeout.kt:184)
    at app//kotlinx.coroutines.TimeoutCoroutine.run(Timeout.kt:154)
    at app//kotlinx.coroutines.test.TestDispatcher.processEvent$kotlinx_coroutines_test(TestDispatcher.kt:23)
    at app//kotlinx.coroutines.test.TestCoroutineScheduler.tryRunNextTask(TestCoroutineScheduler.kt:95)
    at app//kotlinx.coroutines.test.TestCoroutineScheduler.advanceUntilIdle(TestCoroutineScheduler.kt:110)
    at app//kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt.runTestCoroutine(TestBuilders.kt:212)
    at app//kotlinx.coroutines.test.TestBuildersKt.runTestCoroutine(Unknown Source)
    at app//kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$1$1.invokeSuspend(TestBuilders.kt:167)
    at app//kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$1$1.invoke(TestBuilders.kt)
    at app//kotlinx.coroutines.test.TestBuildersKt__TestBuildersKt$runTest$1$1.invoke(TestBuilders.kt)
    at app//kotlinx.coroutines.test.TestBuildersJvmKt$createTestResult$1.invokeSuspend(TestBuildersJvm.kt:13) …
Run Code Online (Sandbox Code Playgroud)

kotlin kotlin-coroutines

18
推荐指数
1
解决办法
5312
查看次数

IE11 Angular-CLI源映射不起作用

源地图显示在JavaScript包中

使用Angular-CLI 1.0和Angular 4,尽管已经//# sourceMappingURL=main.bundle.js.map捆绑了JavaScript ,但我无法获得源映射.有没有人知道如何让源图在IE-11中运行?通常这不是一个大问题,我只是切换到firefox或chrome.但我正在使用Office-js api开发一个Excel加载项,它使用嵌入式IE11浏览器来显示加载项,所以我坚持使用它.

我的tsconfig.json:

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": "src",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "pretty": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
        "es2017",
        "dom"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

tsconfig.app.json:

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "module": "es2015",
    "baseUrl": "",
    "types": []
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts"
  ]
}
Run Code Online (Sandbox Code Playgroud)

source-maps typescript internet-explorer-11 office-js angular-cli

5
推荐指数
1
解决办法
1321
查看次数

F12 开发人员工具 -&gt; 内存 -&gt; 拍摄快照失败,并显示“快照创建失败。无效字符”

在我的 IE11 实例上尝试“拍摄堆快照”后,我的 F12 开发人员工具内存分析器失败并显示错误“快照创建失败”。此错误文本以粗体红色文本打印在“获取堆快照”按钮上方。请参阅下面的错误图像(图 1)。

我不知道这意味着什么,也不知道如何从这里开始。IE11 实例作为加载项嵌入在 Excel 2016 中,我无法使用其他 Web 浏览器进行故障排除。IE11 实例正在运行 Angular 2 应用程序。角度应用程序正常运行。每次我尝试为此应用程序拍摄堆快照时都会发生此错误,但在其他应用程序中不会。

请告诉我如何解决这个“快照创建失败。无效字符”错误,或者,至少,告诉我在哪里可以获得有关为什么会发生此错误的其他信息。(是否可以查看 F12 开发人员工具的日志?)

我的系统信息包含在下面的图像中(图 2),发生的错误的 gif 位于底部(图 3)。

繁殖步骤:

  • 项目清单
  • 打开 F12 选择器 (C:/Windows/System32/F12/F12Chooser.exe)
  • 选择我的 IE11 实例。
  • 单击 F12 开发人员工具左上角的下拉菜单,然后选择“内存”
  • 单击“开始分析以开始性能会话 (CTRL+E)
  • 单击“拍摄快照”框。
  • 在“拍摄快照”框上方居中查看以红色粗体显示的错误“快照创建失败”

预期行为:

单击“拍摄快照”可为我提供已连接 IE11 实例的堆快照。

观察到的行为:

单击“拍摄快照”失败并显示错误“快照创建失败。无效字符”

系统信息:

  • 操作系统:Win 10 Pro 10.0.15063 Build 15063IE11

  • IE11:版本 11.850.15063(注意:作为加载项嵌入 Excel 2016 中。我启用了“增强保护模式”和“增强保护模式的 64 位进程”,并在启用它们后重新启动了我的机器。)


错误图像 - 图像 1

错误图片

系统信息 - 图 2

系统信息

发生错误的 Gif / 复制步骤 - 图 3

繁殖步骤

memory internet-explorer-11 ie11-developer-tools

5
推荐指数
0
解决办法
547
查看次数