如何在aurelia模块上进行单元测试?

我正在尝试对aurelia组件的自制NPM模块进行单元测试。请注意,这不是aurelia应用程序,它只是组件和类的存储库!

为此,我尝试复制aurelia-dialog的设置,但仍然存在一些问题,这些问题实际上阻止了我以有用的方式通过单个测试...

  1. 因果报应非常慢:在第一次测试运行前将近1分钟
  2. 尽管组件的html模板是由jasmine加载的,但并未提供给客户端:当浏览器请求时,我收到404,但业力控制台输出显示已加载文件
  3. 不幸的是,我不得不将jquery用作npm依赖项,而我找不到如何为茉莉花加载它,这使得什至无法使用它来加载组件。

非常感谢!

弗雷德·克鲁弗(Fred Kleuver)

复制aurelia-dialog设置可能无济于事,因为它不再包含任何html文件。他们在打字稿源中插入html,以使消费者更容易捆绑(也可能更易于测试。)

  1. Karma的速度仅与与之集成的捆绑器/翻译器一样快,并且当然取决于要加载的文件数。仔细检查您是否不包含/不需要的文件:

    • 您需要包括+观看srctest文件夹
    • 您应该包括node_modules和其他部门,但不要观看它们
    • 其他任何内容,例如构建资产/脚本,自定义类型,均应排除在外
  2. 总是有一个模块加载器来处理这些来自应用程序内部文件的请求。他们生活在“虚拟”道路上。当您直接从浏览器请求文件时,即使您的应用可以访问它,您也会绕过它并请求可能不存在(或未提供)的内容。

  3. 加载类似jQuery(或Bluebird)之类的依赖项的方式与通常在应用程序中的加载方式类似。从包配置中直接引用node_modules文件夹中的路径。然后,确保它已打包到您的捆绑包中,或独立提供。在后一种情况下,只需import "jquery"在中setup.ts或查看Bluebird下面我的建议中的内容。

一条建议

如果需要考虑速度,我建议尝试将业力与webpack结合使用。这通常非常快(尤其是自webpack 4起),并且极大地简化了附加资产的服务。

这个插件框架应该让您很好地了解这些各种东西如何协同工作。

这是如何使用webpack配置业力的示例

然后添加HTML资产进行测试,只需添加html-loader如下ts-loader所示(你可以看到这里):

    {
      test: /\.html$/,
      use: [{ loader: "html-loader" }]
    },

免责声明:我是上述插件框架的作者

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Laravel Form Request上进行单元测试prepareForValidation?

如何在Aurelia中进行单元测试表单验证

Aurelia单元测试通往模块的路径

在Android NDK上进行单元测试

Python单元测试:如何对包含数据库操作的模块进行单元测试?

如何对模块中的功能进行单元测试?

如何在单元测试之间重置requirejs模块

如何在Netbeans中进行C ++单元测试?

如何在Java中对ZipOutputStream进行单元测试

如何在 Angular 中对 NGXS 进行单元测试?

如何在$ route上对VueJS watcher进行单元测试

如何在Angular 2中对指令进行单元测试?

如何在Java中对Jdbc代码进行单元测试?

如何在@ ngrx / data中对EntityCollectionServiceBase进行单元测试?

如何在JSP中对逻辑进行单元测试?

如何在python中对POST方法进行单元测试?

如何在春季进行单元测试验证注释

如何在Redux中对mapDispatchToProps进行单元测试?

如何在指令中对$ emit的间谍进行单元测试?

如何在Swift中对NSFetchedResultsController进行单元测试

如何在Swift中对抛出函数进行单元测试?

如何在模拟方法中对函数进行单元测试

如何在指令中对隔离范围进行单元测试

如何在MVVM中对异步ICommand进行单元测试?

如何在React Native中对PanResponder进行单元测试?

如何在 Visual Studio 2015 中进行单元测试

如何在 Lumen 上对 GraphQL 响应进行单元测试?

如何在python中对递归函数进行单元测试?

如何在 Spring Boot 中对 StdDeserializer 进行单元测试?