作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 Angular2 中进行了测试,其中包含 ROUTER_PROVIDERS,但收到此错误消息:
“原始异常(exception):必须通过 createPlatform
创建平台!”
首先,我收到“没有路由器提供程序”错误,然后我将 ROUTER_PROVIDERS 包含在 beforeEachProvider 调用中。提出了这个问题,我不知道如何弄清楚它与什么有关。
我的测试目前看起来像这样:
import {TestComponentBuilder, ComponentFixture} from '@angular/compiler/testing';
import {async, it, describe, expect, beforeEach, beforeEachProviders, inject} from '@angular/core/testing';
import {Component} from '@angular/core';
import {By} from '@angular/platform-browser';
import {HeaderComponent} from './header.component';
import {LocationStrategy, HashLocationStrategy} from '@angular/common';
import {ROUTER_PROVIDERS} from '@angular/router-deprecated';
describe('Header component', () => {
// Setup the dependencies for this test
beforeEachProviders(() => [
ROUTER_PROVIDERS
]);
@Component({
selector: 'test-header',
template: `<et-header [username]="username" [user_image_url]="user_image_url"></et-header>`,
directives: [HeaderComponent]
})
class TestHeader {
username: string = "Header test";
user_image_url: string = "https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150";
}
it('should sent font-size to x-large', async(inject([TestComponentBuilder], (tcb) => {
return tcb.overrideTemplate(TestHeader, '<et-header [username]="username" [user_image_url]="user_image_url"></et-header>')
.createAsync(TestHeader).then((fixture: any) => {
fixture.detectChanges();
let headerDebugElement = fixture.debugElement.query(By.css('header'));
//expect(headerDebugElement.nativeElement.classList.contains('header')).toBe(true);
expect(true).toBe(true);
});
})));
});
提前致谢。若昂加林
最佳答案
用于路由器版本
终于找到了解决这个问题的方法。
运行单元测试时你需要使用
import {ROUTER_FAKE_PROVIDERS} from '@angular/router/testing';
为路由器提供供应商。
对于路由器版本 3.0.0-alpha.7 (RC3)
import {ActivatedRoute, Router} from '@angular/router';
class MockRouter { createUrlTree() {} }
class MockActivatedRoute { }
beforeEachProviders(() => [
provide(Router, { useClass: MockRouter }),
provide(ActivatedRoute, { useClass: MockActivatedRoute })
]);
这将为您的测试提供路由器
注意:Angular 2 Router 现在有自己的发布周期,与其他 Angular 2 包分开,因此它的版本编号不同
关于unit-testing - Angular2 - 必须通过 `createPlatform` 创建平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771976/
我在 Angular2 中进行了测试,其中包含 ROUTER_PROVIDERS,但收到此错误消息: “原始异常(exception):必须通过 createPlatform 创建平台!” 首先,我收
我是一名优秀的程序员,十分优秀!