我正在开发一个尚未开发的大角度应用程序。我对业力单元测试有问题。长话短说,我用的是角度和要求。如果我将模板嵌入到我的指令中,我的测试就会运行良好。但是,由于这个应用程序将是巨大的,它将不会规模。但是,当我移动模板并使用templateUrl在指令中加载它时,我无法消除以下错误之一(取决于我修改conf的方式):
- when I put `{pattern: 'path/to/mytpl.html', included: false}` in my karma.conf and add a requirejs's define `path/to/mytpl.html` in my test file (this is the way I would like that to work).
- when I put `path/to/mytpl.html` in my karma.conf then all my template return this error (whether I am using ng-html2-js preprocessor or not).
注:我在karma.conf中不使用FQN,我在这里使用它是为了保持一致性。我认为这不重要,但我更愿意把它说清楚。
我看到有人将每个'path/to/mytpl.html': {deps: ['angular']}都放在了它们的test-main.js的shim部分。但这对我不起作用,这个解决方案也不会扩大规模。
发布于 2014-09-15 14:25:50
在把这个问题搁置了一段时间并利用这段时间来提高我的知识和扩大我的应用程序之后,我找到了一个解决方案。
简要方法概述:由于业力-ng-html2js-预处理程序或业力-html2js-预处理程序似乎适用于其他一些项目,并且在官方文档中引用它们时,我尝试了许多(我认为几乎所有)可能的配置组合,以便在我的测试环境中运行其中之一。但没有成功,我找到了线索:我必须放下它们,找到另一条路。
解决方案来自grunt-html2js。通过简单地添加基本设置并运行grunt,它生成了一个包含我所有模板的模块--也许,我稍后会将它拆分到更有意义的模块中。但从现在起,工作就快完成了。然后我就不得不:
file: [ {pattern: 'path/to/mytplmodule.js', included: false}, ...]path: [ 'templates' : 'path/to/mytplmodule', ...]的路径shim: [ 'templates' : 'angular', ...]之前加载define(['templates',...], function(){...});中加载这个模块beforeEach(module('path/to/mytpl.html'));仅此而已!
这种方法有一个缺点,它需要检索或模拟测试指令中使用的所有其他指令的模板。随着指令数量的增加,这可能会令人厌烦。但我现在更喜欢这样,因为它对应用程序的代码不具有侵入性。也许以后,特别是当我将javascript的编译包含在我的过程中时,我也会把它从test移到app。
发布于 2015-03-25 18:31:08
我也遇到了同样的问题,并在下面的文章中找到了解决方案。我猜您的问题是在错误的业力或requireJS配置,特别是基本路径设置。如果您的指令templateUrl是相对的,并且对于业力基路径或requireJS基路径不能正确地解决url,那么您需要解决这个问题。
让我们假设您的指令具有templateUrl的'app/ directive /myDirective.html‘值。然后:
- _base_ prefix in the url (karma serves all files from that virtual path and adds this prefix to all urls)
- _'.js'_ at the end of your url
- module\_path has some prefix => simply remove it by adding the following to karma config:ngHtml2JsPreprocessor: { stripPrefix: 'modulePrefix' }
- module_path是较短的=>添加缺失部分:
ngHtml2JsPreprocessor: { prependPrefix: 'missingPart' }
重新启动业力,并确保步骤3中的“module_path”是“app/directive/”
我希望通过完成这6步,你将得到一个工作测试。祝好运。
https://stackoverflow.com/questions/25431254
复制相似问题