unit-testing - Jasmine 使用 templateUrl 测试 AngularJS 指令

标签 unit-testing angularjs jasmine angularjs-directive

我正在使用 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, '');
}));

关于unit-testing - Jasmine 使用 templateUrl 测试 AngularJS 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14761045/

相关文章:

angularjs - 对 Angularjs 的嵌入和隔离范围和绑定(bind)感到困惑

angularjs - 如何在 Angular JS 数组末尾添加元素?

angular - ngrx 测试方法调度 Action

php - 如何将一组测试用例发送到 PHPUnit willReturnOnConsecutiveCalls

ruby-on-rails - 哪里用 `FactoryGirl.build_stubbed` 哪里用RSpec的 `mock`/`double`

javascript - 未剥离 AngularJS JSON 漏洞保护

typescript - 如何在 beforeAll 测试中创建类型变量?

angularjs - AngularJS 中 $routeChangeStart 的 Jasmine 单元测试用例

java - 将测试文件导入 JUnit 的简单方法

unit-testing - 我如何模拟grails domain.refresh()