Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Jasmine单元测试期间加载aurelia验证插件-使用网页包_Aurelia - Fatal编程技术网

在Jasmine单元测试期间加载aurelia验证插件-使用网页包

在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

我正在使用网页包的Aurelia。基于ESNext框架网页包

我有一些简单的JS模型类,如:

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);
  }
}