我正在使用 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/