过去几个小时一直处于轻微状况。我试图学习Angular 2并且在那次追求中我决定创建一个基础骨架,我可以在其上构建我的ng2应用程序。这最终让我得到了我的问题。我的骨架已经相对接近完成,但我在第一次Jasmine测试时遇到了错误。从我可以看出它看起来可能来自div中的换行符虽然我不是%100肯定。我已经完成了一些前端开发,但也没有必要进行测试(愚蠢),所以这是我第一次通过。由于Angular2尚未正式发布,我目前正在使用plugin插入我的模板并内联到我的ng2组件中。据我所知,这是问题的根源。我在测试中使用expect(<ng2-element>)toHaveText(...)
结构,这是目前的情况:
NG2元素=
<p>{{ message }}</p>
测试通行证。 ng2-element =
<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!');
});
})));
});
答案 0 :(得分:1)
根据docs,toHaveText
包含以下文档:
期望元素具有完全给定的文本。
所以你需要警惕白色空间。
似乎应该有toContainText
进行部分匹配,但在存在某些内容之前,您可以自己角色。
此外,我相信您也可以执行以下操作(警告:未经测试):
expect(fixture.debugElement.nativeElement.getText()).toContain('Hello, Angular2!');