由于换行而导致Karma测试失败?

时间:2016-06-08 02:49:33

标签: javascript angular karma-jasmine

过去几个小时一直处于轻微状况。我试图学习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!');
      });
  })));
});

1 个答案:

答案 0 :(得分:1)

根据docstoHaveText包含以下文档:

  

期望元素具有完全给定的文本。

所以你需要警惕白色空间。

似乎应该有toContainText进行部分匹配,但在存在某些内容之前,您可以自己角色。

此外,我相信您也可以执行以下操作(警告:未经测试):

expect(fixture.debugElement.nativeElement.getText()).toContain('Hello, Angular2!');