当前位置: 首页 > 面试题库 >

Jasmine使用templateUrl测试AngularJS指令

朱鸿畅
2023-03-14
问题内容

我正在使用Jasmine编写AngularJS的指令测试,并与它们一起使用templateUrl:https
:
//gist.github.com/tanepiper/62bd10125e8408def5cc

但是,当我运行测试时,我得到了要点中包含的错误:

Error: Unexpected request: GET views/currency-select.html

从我在文档中阅读的内容来看,我认为自己做得正确,但是事实并非如此-我在这里想念的是什么?

谢谢


问题答案:

如果您使用的是ngMockE2E或ngMock:

所有 HTTP请求均使用您指定的规则在本地处理,并且 不会
传递到服务器。由于模板是通过HTTP请求的,因此它们也在本地进行处理。由于您在应用尝试连接时未指定要执行的操作views/currency- select.html,因此它告诉您它不知道如何处理。您可以轻松地告诉ngMockE2E传递模板请求:

$httpBackend.whenGET('views/currency-select.html').passThrough();

请记住,如果您愿意,还可以在路由路径中使用正则表达式来传递所有模板。

该文档对此进行了更详细的讨论:http :
//docs.angularjs.org/api/ngMockE2E.$httpBackend

否则使用此:

您需要使用$injector来访问新的后端。从链接的文档中:

var $httpBackend;
beforeEach(inject(function($injector) {
  $httpBackend = $injector.get('$httpBackend');
  $httpBackend.whenGET('views/currency-select.html').respond(200, '');
}));


 类似资料:
  • 问题内容: 我有一个已定义的AngularJS指令。我正在尝试与Jasmine进行单元测试。 根据此建议,我的JasmineJavaScript如下所示: 当我在Jasmine spec错误中运行此命令时,出现以下错误: 我想要的只是让templateUrl原样加载- 我不想使用。我相信这可能与使用ngMock而不是ngMockE2E有关。如果是罪魁祸首,如何使用后者而不是前者? 提前致谢! 问题

  • 问题内容: 我正在努力使用Karma + Jasmine测试AngularJS工厂。 我无法将工厂注入变量。 我究竟做错了什么? 注意:文件已正确加载 厂: 码: 输出: 问题答案: 您需要致电:

  • 问题内容: 我只想在不引导Angular的情况下测试服务。 我看了一些例子和教程,但是我什么也不会去。 我只有三个文件: myService.js:在这里定义AngularJS服务 test_myService.js:在这里定义服务的Jasmine测试。 specRunner.html:一个具有常规茉莉花配置的HTML文件,在其中导入了前两个其他文件以及茉莉花,Angularjs和angular-

  • 问题 假如你正在使用 CoffeeScript 写一个简单地计算器,并且想要验证其功能是否与预期一致。可以使用 Jasmine 测试框架。 讨论 在使用 Jasmine 测试框架时,你要在一个参数(spec)文档中写测试,文档描述的是代码需要测试的预期功能。 例如,我们希望计算器可以实现加法和减法的功能,并且可以正确进行正数和负数的运算。我们的 spec 文档如下列所示。 # calculator

  • 问题内容: 我一直在努力围绕Jasmine 2.0和AngularJS的承诺。我知道: 茉莉花2.0引入的功能,以取代旧的和功能 在触发摘要循环之前,AngularJS Promise 不会解析 如何在Jasmine 2.0中使用新的异步语法测试AngularJS Promise? 问题答案: 致电后: 致电。这将强制进行摘要循环并传播承诺解决方案 致电。告诉Jasmine异步测试已经完成 这是一

  • 问题内容: 我正在尝试使用Jasmine规格文件对Angular服务进行单元测试。这需要加载模块。这是一个简单的规范,旨在简单地加载Angular模块: 当我运行Jasmine时,这将导致以下错误 jasmine.yml文件包含 该软件的版本为: Rails 3.2.7 jasmine-core 1.2.0 jasmine-headless-webkit 0.8.4 AngularJS 1.0.2