6

是否可以使用 Chai 断言库测试该值是否包含在某个数组中?

例子:

var myObject = {
    a : 1,
    b : 2,
    c : 3
};
var myValue = 2;

我需要做这样的事情(但是它不起作用):

expect(myObject).values.to.contain(myValue);
//Error: Cannot read property 'to' of undefined

expect(myObject).to.contain(myValue);
//Error: Object #<Object> has no method 'indexOf'

我该如何测试呢?

4

3 回答 3

15

或者,如果您想检查该值以及您可以执行的属性

expect(myObject).to.have.property('b', myValue);

您不需要此检查的插件。

于 2015-02-27T23:57:26.213 回答
2

chai 模糊插件具有您需要的功能。

var myObject = {
    a : 1,
    b : 2,
    c : 3
};
var myValue = 2;
myObject.should.containOneLike(myValue);
于 2013-05-06T11:26:29.653 回答
2

如果对象有点嵌套,比如

{
    "errors": {
        "text": {
            "message": "Path `text` is required.",
            "name": "ValidatorError",
            "properties": {
                "message": "Path `{PATH}` is required.",
                "type": "required",
                "path": "text",
                "value": ""
            },
            "kind": "required",
            "path": "text",
            "value": "",
            "$isValidatorError": true
        }
    },
    "_message": "todos validation failed",
    "message": "todos validation failed: text: Path `text` is required.",
    "name": "ValidationError"
}

然后对errors.text.message做一个断言,我们可以这样做

expect(res.body).to.have .property('errors') .property('text') .property('message', 'Path textis required.');

于 2018-07-01T18:17:43.860 回答