我有一个挂起函数,可以对外部 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) 使用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
在我的 IE11 实例上尝试“拍摄堆快照”后,我的 F12 开发人员工具内存分析器失败并显示错误“快照创建失败”。此错误文本以粗体红色文本打印在“获取堆快照”按钮上方。请参阅下面的错误图像(图 1)。
我不知道这意味着什么,也不知道如何从这里开始。IE11 实例作为加载项嵌入在 Excel 2016 中,我无法使用其他 Web 浏览器进行故障排除。IE11 实例正在运行 Angular 2 应用程序。角度应用程序正常运行。每次我尝试为此应用程序拍摄堆快照时都会发生此错误,但在其他应用程序中不会。
请告诉我如何解决这个“快照创建失败。无效字符”错误,或者,至少,告诉我在哪里可以获得有关为什么会发生此错误的其他信息。(是否可以查看 F12 开发人员工具的日志?)
我的系统信息包含在下面的图像中(图 2),发生的错误的 gif 位于底部(图 3)。
繁殖步骤:
预期行为:
单击“拍摄快照”可为我提供已连接 IE11 实例的堆快照。
观察到的行为:
单击“拍摄快照”失败并显示错误“快照创建失败。无效字符”
系统信息:
操作系统:Win 10 Pro 10.0.15063 Build 15063IE11
IE11:版本 11.850.15063(注意:作为加载项嵌入 Excel 2016 中。我启用了“增强保护模式”和“增强保护模式的 64 位进程”,并在启用它们后重新启动了我的机器。)
错误图像 - 图像 1
系统信息 - 图 2
发生错误的 Gif / 复制步骤 - 图 3