首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jest/Jasmine .toContain()即使存在匹配值,也会失败

Jest/Jasmine .toContain()即使存在匹配值,也会失败
EN

Stack Overflow用户
提问于 2017-01-29 01:04:33
回答 1查看 3.7K关注 0票数 2

我正在用Button组件编写一个简单的React应用程序,如下所示:

代码语言:javascript
复制
import React, { Component } from 'react';
// shim to find stuff
Array.prototype.contains = function (needle) {
  for (var i = 0; i < this.length; i++) {
       if (this[i] == needle) return true;
   }
   return false;
};

class Button extends Component {
  propTypes: {
    text: React.PropTypes.string.isRequired,
    modifiers: React.PropTypes.array
  }
  render() {
    return(
      <span className={this.displayModifiers()}>{this.props.text}</span>
    );
  }
  displayModifiers() {
    const modifiers = this.props.modifiers || ["default"];
    if (modifiers.contains("default") ||
      modifiers.contains("danger")  ||
      modifiers.contains("success")) {
      // do nothing
    } else {
      // add default
      modifiers.push("defualt");
    }
    var classNames = "btn"
    for (var i = 0; i < modifiers.length; i++) {
      classNames += " btn-" + modifiers[i]
    }
    return(classNames);
  }
}

export default Button;

然后我写了这个来测试它:

代码语言:javascript
复制
it("contains the correct bootstrap classes", () => {
  expect(mount(<Button modifiers={["flat"]}/>).html()).toContain("<span class=\"btn btn-flat btn-default\"></span>");
});

应该传递该代码,但我收到以下错误消息:

代码语言:javascript
复制
expect(string).toContain(value)

Expected string:
  "<span class=\"btn btn-flat btn-defualt\"></span>"
To contain value:
  "<span class=\"btn btn-flat btn-default\"></span>"

  at Object.it (src\__tests__\Button.test.js:42:293)

你知道为什么这件事没有过去吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-29 14:28:38

从医生那里:

当您要检查某项是否在列表中时,请使用.toContain

要测试字符串,您应该使用toBetoEqual

代码语言:javascript
复制
it("contains the correct bootstrap classes", () => {
  expect(mount(<Button modifiers={["flat"]}/>).html()).toBe("<span class=\"btn btn-flat btn-default\"></span>");
});

但是有一种更好的方法来测试输出呈现的组件:快照

代码语言:javascript
复制
it("contains the correct bootstrap classes", () => {
  expect(mount(<Button modifiers={["flat"]}/>).html()).toMatchSnapshot();
});

请注意,使用酶进行快照测试需要enzymeToJson

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

https://stackoverflow.com/questions/41916612

复制
相关文章

相似问题

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