Jasmine测试检查html是否包含文本并返回boolean

Spd*_*ter 38 javascript jquery jasmine karma-jasmine

expect(view.$el.html()).toContain('Admin');
Run Code Online (Sandbox Code Playgroud)

视图确实包含"管理员"这个词,所以我希望它返回true.我怎样才能做到这一点?

expect(view.$el.html()).toContain('Admin');
Run Code Online (Sandbox Code Playgroud)

这回来了undefined.我怎样才能让它回归true

<header class="main">
  <div id="heading">
    <ul class="header-view right">
      <li class="inline"><a href="#link" class="button help-btn tab-btn"><span>  </span>Help</a></li>
      <li class="inline last"><a href="#og" class="button admin-btn tab-btn expand-admin"><span></span>Admin</a></li>
    </ul>
  </div>
</header>
Run Code Online (Sandbox Code Playgroud)

这是从中返回的 view.$el.html

请帮忙.

ale*_*cxe 73

toContain()现在实际上可以用于字符串检查中的子字符串:

expect(view.$el.html()).toContain('Admin');
Run Code Online (Sandbox Code Playgroud)

  • `const 内容:HTMLElement = fixture.debugElement.nativeElement; expect(content.innerHTML).toContain('Admin');` 对于那些在 angular 2 上寻找等价物的人。 (4认同)

Lee*_*ley 14

来自Jasmine文档:

'toContain'匹配器用于查找数组中的项

你试图在字符串中找到一个字符串,所以我会做这样的事情:

expect(view.$el.html().indexOf('Admin') !== -1).toBe(true);
Run Code Online (Sandbox Code Playgroud)

  • 也可以使用`toMatch`:`expect(view.$ el.html()).toMatch('Admin')`.`toMatch`匹配器用于正则表达式. (6认同)
  • 请更新答案,因为这既是解决问题又是过时的错误方法. (3认同)