【发布时间】:2020-02-28 12:31:37
【问题描述】:
我用jestjs 为我的ngrx/store 进行测试。我得到了测试通过的结果。即使收到如下错误:
console.error node_modules/jsdom/lib/jsdom/virtual-console.js:29
Error: Cross origin http://localhost forbidden
at dispatchError (C:\722333\USD\Project\AOS.UI\NG-USD\node_modules\jsdom\lib\jsdom\living\xhr-utils.js:60:19)
at Object.validCORSHeaders (C:\722333\USD\Project\AOS.UI\NG-USD\node_modules\jsdom\lib\jsdom\living\xhr-utils.js:72:5)
at receiveResponse (C:\722333\USD\Project\AOS.UI\NG-USD\node_modules\jsdom\lib\jsdom\living\xmlhttprequest.js:842:21)
at Request.<anonymous> (C:\722333\USD\Project\AOS.UI\NG-USD\node_modules\jsdom\lib\jsdom\living\xmlhttprequest.js:677:38)
at Request.emit (events.js:203:13)
at Request.onRequestResponse (C:\722333\USD\Project\AOS.UI\NG-USD\node_modules\request\request.js:1066:10)
at ClientRequest.emit (events.js:203:13)
at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:575:27)
at HTTPParser.parserOnHeadersComplete (_http_common.js:116:17)
at TLSSocket.socketOnData (_http_client.js:449:22) undefined
有人帮助我理解上述问题吗?以及如何解决?
提前致谢。
更新: 根据 Luctia 的建议,我修复了 cors 问题。但收到如下错误:
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)
需要为此添加任何解决方法吗?
【问题讨论】:
-
您似乎有一个异步测试。您需要使用
fakeAsync和tick来“通过”时间,或者在it中提供done: DoneFn作为回调,并在完成时调用done(),如果失败则调用done.fail() -
@Sergey - 如何调用完成功能?有什么帮助吗?这是我的测试代码:jsfiddle.net/L2yjw5kp
-
您确定您正在调试正确的测试吗?似乎错误与您展示的测试无关,因为此类错误通常出现在具有
.subscribe或任何异步功能(setTimeout、promise.then() 等)的测试中。
标签: angular jestjs angular-test ngrx-store-8.0