"Q js未定义." 试图解决aurelia-breeze在测试方法(karma + jasmine)中的承诺

Jit*_*Joy 5 typescript breeze q karma-jasmine aurelia

尝试在aurelia(typescript + breeze)应用程序的测试方法中解决aurelia-breeze的承诺时,我一直遇到错误.

使用的测试框架是karma+jasmine.

aurelia-breeze包的版本是1.0.0

Aurelia breeze使用es promise解析器而不是Q.js,但测试方法是搜索Q.js来解决从breeze返回的promise.

我试图从文件中将Q库添加到window对象spec.但是在文件中设置之前,它breeze.debug.js试图Qwindow对象访问js spec.

这没有解决问题.

请帮我解决这个问题.

Jer*_*yow 5

这样的事情应该有效:

import {configure as configureAureliaBreeze} from 'aurelia-breeze/index';
import {Container} from 'aurelia-dependency-injection';

const container = new Container();
configureAureliaBreeze({ container, globalResources: () => {} });

// ... tests ...
Run Code Online (Sandbox Code Playgroud)

Breeze依赖于Q for promises和jQuery for ajax.Aurelia-breeze分别使用ES6 promises和aurelia http-client来破坏这两种依赖关系.上面的代码有效地模拟了.plugin('aurelia-breeze')运行aurelia应用程序时调用中会发生的情况.

https://github.com/jdanyow/aurelia-breeze/blob/master/src/index.js#L15-L16

  • 非常感谢您的帮助.我能够使用上面的代码片段进行一些小改动来解决问题.来自'aurelia-dependency-injection'的`import {Container};` (3认同)