首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试失败后,角2 RC5

测试失败后,角2 RC5
EN

Stack Overflow用户
提问于 2016-08-11 11:26:49
回答 3查看 5.4K关注 0票数 12

我在测试中使用了以下格式:

代码语言:javascript
复制
export function main() {
    describe('Angular2 component test', function() {
         it('should initialize component',
           async(inject([TestComponentBuilder], (tcb: TestComponentBuilder) => {
              var template = '<specific-component-tag>';
                return tcb.overrideTemplate(TestComponent, template)
                .createAsync(TestComponent)
                .then((fixture) => {
                    expect(fixture.componentInstance.viewChild).toBeDefined();
                    fixture.detectChanges();
                    expect(fixture.componentInstance.viewChild.items.length).toBe(1);
                    // .... etc.
                }).catch (reason => {
                    console.log(reason);
                    return Promise.reject(reason);
                });
         })));
      });
}

这在RC4中很好。但是RC5突然出现了,现在这段代码已经不能工作了。它会抛出以下错误:

代码语言:javascript
复制
Module ".... @angular/core/testing" has no exported member 'it'.
Module ".... @angular/core/testing" has no exported member 'describe'.
Module ".... @angular/core/testing" has no exported member 'expect'.
Module ".... @angular/core/testing" has no exported member 'beforeEachProviders'.
Module ".... @angular/compiler/testing" has no exported member 'TestComponentBuilder'.
Module ".... @angular/compiler/testing" has no exported member 'ComponentFixture'.

请帮助我将这个测试迁移到angular2 RC5。

更新:我已经读过RC5 release notes,但是我没有想到如何实现我的目标。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-11 20:15:12

通过@角形/核心/测试可获得的茉莉花进口将被删除。因此,删除下列导入

在此之前:

代码语言:javascript
复制
import {
  beforeEach,
  beforeEachProviders,
  describe,
  expect,
  it,
  inject,
} from '@angular/core/testing';

之后

代码语言:javascript
复制
/// <reference path="../../../typings/main/ambient/jasmine/index.d.ts" />
import {
  inject, addProviders
} from '@angular/core/testing';

引用路径应该是文件中的第一行,它应该指向jasmine类型定义文件。(更新相关信息。即.././ to任何东西)以获得茉莉花类型的检查,在ambientDevDependencies中添加下面一行。我的看上去像这样

代码语言:javascript
复制
{
  "ambientDevDependencies": {
    "angular-protractor": "registry:dt/angular-protractor#1.5.0+20160425143459",
    "jasmine": "registry:dt/jasmine#2.2.0+20160412134438",
    "selenium-webdriver": "registry:dt/selenium-webdriver#2.44.0+20160317120654"
  },
  "ambientDependencies": {
    "es6-shim": "registry:dt/es6-shim#0.31.2+20160317120654"
  }
}

也变了

代码语言:javascript
复制
  beforeEachProviders(() => [InMemoryDataService]);

代码语言:javascript
复制
import { TestBed } from '@angular/core/testing';
...
describe('...', () => {
  TestBed.configureTestingModule({
    providers: [ InMemoryDataService ]
  });
  it(...);
});
票数 14
EN

Stack Overflow用户

发布于 2016-08-11 11:40:44

看看changelog:https://github.com/angular/angular/blob/master/CHANGELOG.md

它看起来像API,您正在使用的是不推荐的-路径和名称已经改变。:)

例如:

  • TestComponentBuilder和ComponentFixture现在正在进行@ar角/core/testing,
  • beforeEachProviders:

代码:

代码语言:javascript
复制
beforeEachProviders(() => [MyService]);

改为:

代码语言:javascript
复制
beforeEach(() => {
    addProviders([MyService]);
});
票数 4
EN

Stack Overflow用户

发布于 2016-08-11 17:43:25

如果你已经看过他们的释放通知书。在测试API包方面有很多变化。

https://github.com/angular/angular/blob/master/CHANGELOG.md#breaking-changes

因此,我还没有尝试将测试迁移到RC5。但我找到了关于更改新测试API的链接。

https://ng2-info.github.io/2016/08/angular-2-rc-5/#テスティングapiに関する変更

希望能帮上忙。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38895087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档