微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ClojureScript cljs.core.async/go 在 jsdom 中不起作用

如何解决ClojureScript cljs.core.async/go 在 jsdom 中不起作用

我正在尝试使用 jsdomKarma 作为测试运行程序将 ClojureScript 测试从“Chrome Headless”迁移到 shadow-cljs

需要访问 DOM 或浏览器 API 的常规测试工作正常。但是使用 cljs.core.async/go 的异步测试不起作用。基本上,go 中的任何内容都不会被执行。

有没有人知道什么可能是错的?我错过了一些配置吗?是只有 jsdom 问题还是可能是 cljs.core.async 互操作性问题?

我在下面放了一个简单的测试示例

(ns async-tests
  (:require [cljs.test :refer [deftest async]]
            [cljs.core.async :refer [go <! timeout]]))

(deftest async-go-test
  (async done
    (.log js/console "Before go is printed")
    (go
      (.log js/console "After go is never printed")
      (<! (timeout 1))
      (done))))

我在控制台得到的结果是

LOG: 'Testing async-tests'
LOG: 'Before go is printed'
WebKit 537.36 (undefined 0.0.0): Executed 159 of 185 SUCCESS (0 secs / 0.589 secs)
WebKit 537.36 (undefined 0.0.0) ERROR
disconnected,because no message in 30000 ms.

使用的库版本:

  "devDependencies": {
    "jsdom": "^16.4.0","karma": "^5.2.3","karma-cljs-test": "^0.1.0","karma-jsdom-launcher": "^8.0.2","shadow-cljs": "2.10.19"
  }

业力配置:

module.exports = function (config) {
    config.set({
        browsers: ['jsdom'],basePath: 'target',files: ['ci.js'],frameworks: ['cljs-test'],colors: true,logLevel: config.LOG_INFO,client: {
            args: ["shadow.test.karma.init"]
        },jsdomLauncher: {
            jsdom: {
                resources: "usable",runScripts: "dangerously",pretendToBeVisual: true
            }
        }
    })
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。