【发布时间】:2016-03-09 15:45:45
【问题描述】:
作为应用引导程序的一部分,它通过一系列 HTTP GET 来加载资产。
如果我不考虑获取,我的单元测试将抛出“意外的 GET 请求”。问题是我必须在每个测试中包含 GET。下面大约有十几个。
$httpBackend.when('GET', 'assets/iconsets/action-icons.svg').respond('ok');
我的问题是;有没有更好的全局方法来在一个地方解释 GET 并将该调用包含在我的所有测试中?
编辑:
下面是我必须包含在每个规范文件中的整个假设块。我宁愿在某个地方声明这个块一次,可能是全局代码可以执行的地方。
$httpBackend.when('GET', 'assets/iconsets/action-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/alert-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/av-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/communication-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/content-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/device-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/editor-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/file-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/hardware-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/image-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/maps-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/mdi-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/navigation-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/notification-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/social.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/social-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/toggle-icons.svg').respond('ok');
$httpBackend.when('GET', 'assets/iconsets/editor-icons.svg').respond('ok');
【问题讨论】:
-
您可以使用
beforeEachmethod 定义一组测试的期望值。我的问题是:为什么要引导整个应用程序运行单元测试? -
你是对的。我在每个规范文件中都包含了 beforeEach... 中的假设块。有没有办法引用一个可以执行假设的地方,我可以将它们包含在规范文件中?
-
由于
angular.mock.module('myHomeSearch');,我认为我不能通过 Angulars 引导程序。一旦运行,它将运行 Angular 的配置块。
标签: angularjs unit-testing jasmine karma-runner