在过去几个小时里一直处于轻微的状况。我正在尝试学习Angular 2,在那次追求中,我决定创建一个基础骨架,我可以构建我的ng2应用程序。这最终让我得到了我的问题。我的骨架已经相对接近完成但我在第一次Jasmine测试时遇到了错误。从我可以告诉它看起来它可能来自div中的换行符虽然我不是100%肯定。我已经完成了一些前端开发,但也没有必要进行测试(愚蠢),所以这是我第一次通过。由于Angular2尚未正式发布,我目前正在使用plugin插入我的模板并内联到我的ng2组件中。据我所知,这是问题的根源。我在测试中使用expect(<ng2-element>)toHaveText(...)
结构,这是目前的情况:
NG2元素=
<p>{{ message }}</p>
测试通过。 NG2元素=
<p>{{ message }}</p>
测试失败
任何帮助将不胜感激! :)我的骨架repo
每次请求失败测试的代码:
import {Component, provide} from '@angular/core';
import {RouteSegment} from '@angular/router';
import {
async,
beforeEach,
beforeEachProviders,
describe,
expect,
inject,
it,
} from '@angular/core/testing';
import {TestComponentBuilder} from '@angular/compiler/testing';
import {Greeter} from '../shared/index';
import {Hello} from './hello.component';
describe('Hello', () => {
beforeEachProviders(() => [Greeter]);
it('renders greeting', async(inject([TestComponentBuilder], (tcb) => {
tcb.createAsync(Hello)
.then((fixture) => {
fixture.detectChanges();
expect(fixture.debugElement.nativeElement).toHaveText('Hello, Angular2!');
});
})));
});
基于docs,toHaveText
有以下文档:
期望元素具有完全给定的文本。
所以你需要警惕白色空间。
似乎应该有toContainText
进行部分匹配,但是直到某些东西存在,你可以扮演自己的角色。
另外,我相信您也可以执行以下操作(警告:未经测试):
expect(fixture.debugElement.nativeElement.getText()).toContain('Hello, Angular2!');