gpt4 book ai didi

unit-testing - Angular2 - 必须通过 `createPlatform` 创建平台

转载 作者:太空狗 更新时间:2023-10-29 18:33:55 24 4
gpt4 key购买 nike

我在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com