单元测试PhantomJS错误:无法找到变量:Dexie

时间:2016-06-15 18:18:40

标签: typescript phantomjs aurelia systemjs dexie

我想解决的问题在下面显示的输出中表示:

15 06 2016 11:11:16.532:INFO [karma]: Karma v0.13.22 server started at http://localhost:9876/
15 06 2016 11:11:16.532:INFO [launcher]: Starting browser PhantomJS
15 06 2016 11:11:18.004:INFO [PhantomJS 2.1.1 (Windows 8 0.0.0)]: Connected on socket /#3nWVSRqI9N9XmHSCAAAA with id 41039744
PhantomJS 2.1.1 (Windows 8 0.0.0) ERROR
  Error: Can't find variable: Dexie
    Error loading C:/My/My.App/src/My.App.Web/test/case/MyObjectTest.js
[11:11:18] Finished 'test' after 2.8 s

我正在尝试测试MyObject。它的依赖结构如下所示:

MyObject
    - MyObjectDependency
        - MyObjectDependency_Dependency
            - Dexie

换句话说,MyObject依赖于MyObjectDependency,它取决于最终依赖于Dexie的MyObjectDependency_Dependency。

我正在使用TypeScript编写Aurelia Web应用程序。我通过jspm包含了Dexie库(indexedDB包装器)。要使应用程序构建/运行,我必须使用脚本标记直接将jxm_packages文件夹中的dexie.js直接包含到index.html。

我试图让Dexie使用SystemJS加载(就像它应该的那样),但它失败了。

我尝试更新我的业力配置,明确包含dexie.js,但没有解决上述输出中描述的错误。

我还尝试更新所使用的各种组件的版本,这似乎也没有帮助。

以下是我正在使用的关键组件的版本:

节点:4.4.4

JSPM :0.16.15

SystemJS :0.19.6

PhantomJS :2.1.7

Karma :0.13.22

Dexie :1.3.6

我走到了尽头。我不知道还能在哪里看。

如果需要任何其他信息,请告诉我 - 我很乐意添加我能做的事。

谢谢

2 个答案:

答案 0 :(得分:0)

  

我试图让Dexie使用SystemJS加载(就像它应该的那样),但它失败了。

如果没有更多信息,我最好的猜测是你没有正确包含它。

import 'dexie';

请在此处查看答案以获取更多信息。

Would it be possible to use JQuery Bootstrap framework along with Aurelia?

答案 1 :(得分:0)

我在Matthew James Davis和alexeibs的帮助下找到了解决方案。非常感谢你们!

Matthew是对的,我错误地导入了dexie,我能够通过在Chrome中使用alexeibs建议和测试而不是PhantomJS找到确切位置。

似乎VS2015无法识别Dexie软件包附带的* .d.ts文件 - 这是我目前正在解决的问题。我将自己的* .d.ts文件添加到custom_typings,明确指定了模块' dexie'。

我从Dexie复制了定义文件并更改了

中的最后一行
export default Dexie;

为:

declare module "dexie" {
    export default Dexie;
}

使用此版本的dexie.d.ts,VS2015现在对Dexie文档支持的import语句感到满意:

import Dexie from 'dexie'

在创建Dexie表类的过程中,我按照Dexie文档的建议添加了以下行:

const Promise = Dexie.Promise; // KEEP! (or loose transaction safety in await calls!)
const all = Promise.all;

我所拥有的每个地方都在破碎,因为我没有导入dexie。

创建了类型定义后,只需将导入import Dexie from 'dexie'添加到这些文件即可解决问题。