在Jasmine单元测试期间加载aurelia验证插件-使用网页包
我正在使用网页包的Aurelia。基于ESNext框架网页包 我有一些简单的JS模型类,如:在Jasmine单元测试期间加载aurelia验证插件-使用网页包,aurelia,Aurelia,我正在使用网页包的Aurelia。基于ESNext框架网页包 我有一些简单的JS模型类,如: import {ValidationRules} from 'aurelia-validation'; export class Address { street = ''; } ValidationRules .ensure('street').required() .on(Address); 一旦我运行我的茉莉花测试(通过Karma)和Wallaby,我就会得到错误: 'Me
import {ValidationRules} from 'aurelia-validation';
export class Address {
street = '';
}
ValidationRules
.ensure('street').required()
.on(Address);
一旦我运行我的茉莉花测试(通过Karma)和Wallaby,我就会得到错误:
'Message: Did you forget to add ".plugin('aurelia-validation)" to your main.js?'
好的-我在运行测试时没有main.js,那么如何加载插件呢
我尝试过这样做-使用aurelia测试:
import {StageComponent} from 'aurelia-testing';
import {bootstrap} from 'aurelia-bootstrapper-webpack';
...
let component;
beforeEach(done => {
component = StageComponent
.withResources();
component.bootstrap(aurelia => {
aurelia.use.plugin('aurelia-validation')
});
done();
});
但这不适用于Webpack-aurelia bootstrapper Webpack的公开问题。也许我做得不对
在测试期间是否有其他方法加载验证插件?或者让aurelia测试与webpack一起工作
目前,如果我有验证插件,或者试图使用aurelia测试,我完全无法进行任何单元测试。我使用aurelia cli和wallaby进行测试。你离得很近,我想这更让人沮丧。对我来说,秘密在于验证插件必须首先使用spec文件中的beforeAll方法引导,然后使用beforeach方法创建被测系统。下面的规范文件对我起到了作用,并解决了这个消息:您是否忘记将“.plugin('aurelia-validation')添加到main.js”错误中
从“../../../src/entities/SourceSystemEntity”导入{SourceSystemEntity};
从“aurelia测试”导入{StageComponent};
从'aurelia bootstrapper'导入{bootstrap};
描述('SourceSystem类',()=>{
let组件;
让sut:SourceSystemEntity;
之前(完成=>{
component=StageComponent.withResources().inView(“”).boundTo({});
component.configure=(aurelia:aurelia)=>{
奥雷莉亚。用途
.standardConfiguration()
.plugin('aurelia-validation');
};
创建(引导)。然后(()=>{
完成();
});
});
毕竟(()=>{
component.dispose();
});
在每个之前(()=>{
sut=新的SourceSystemEntity();
});
它('已启用验证',()=>{
expect(sut.hasvalization()).toBeTruthy();
});
});
根据我的发现,ValidationRules在导入过程中运行。因为他们还没有进入实际的课堂。对我来说,有效的方法是将ValidationRules放入构造函数或其他方法中,并在引导程序运行后调用它们。仍然没有修复测试期间验证的功能,但它确实允许您运行单元测试
import {ValidationRules} from 'aurelia-validation';
export class Address {
street = '';
constructor() {
ValidationRules
.ensure('street').required()
.on(Address);
}
}
你解决了吗?问题现在解决了吗?还是没有解决。放弃尝试。我用的是Webpack,不是Aurelia CLI。不过还是要谢谢你。在这种情况下,没关系。插件的加载发生在beforeach()方法中实例化被测系统之前执行的beforeAll()中。如果我是正确的,那么aurelia cli和webpack都应该是这种情况。我也得到了同样的答案,你是否忘记加载诸如此类的错误,现在这个错误已经解决了。我想问题可能在于aurelia cli,所有模块都必须符合requirejs。使用jspm进行测试,它应该检测哪种类型的模块,因此不需要所有东西都符合requirejs。我无法使用这种方法让它与jspm一起工作,所以这个假设被推翻了。提出了aurelia测试的一个问题,因为aurelia团队确实需要解决这个问题。
import {ValidationRules} from 'aurelia-validation';
export class Address {
street = '';
constructor() {
ValidationRules
.ensure('street').required()
.on(Address);
}
}