gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:43 25 4
gpt4 key购买 nike

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

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;

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

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

该代码应该可以通过,但我收到以下错误消息:

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)

有什么想法为什么这没有通过吗?

最佳答案

来自文档:

Use .toContain when you want to check that an item is in a list.

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

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

但是有一种更好的方法来测试输出渲染组件:snapshots

it("contains the correct bootstrap classes", () => {
expect(mount(<Button modifiers={["flat"]}/>).html()).toMatchSnapshot();
});

请注意,您将需要 enzymeToJson使用 enzyme 进行快照测试。

关于node.js - 即使存在匹配值,Jest/Jasmine .toContain() 也会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41916612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com