gpt4 book ai didi

javascript - Jasmine 测试对象属性

转载 作者:行者123 更新时间:2023-12-02 22:33:12 25 4
gpt4 key购买 nike

我想做什么

describe('my object', function() {
it('has these properties', function() {
expect(Object.keys(myObject)).toEqual([
'property1',
'property2',
...
]);
});
});

但当然 Object.keys 返回一个数组,根据定义,该数组是有序的...我希望无论属性顺序如何,都可以通过此测试(这对我来说很有意义,因为有无论如何,没有对象键排序的规范...(至少到 ES5))。

如何验证我的对象具有它应该具有的所有属性,同时确保它没有丢失任何属性,而不必担心以正确的顺序列出这些属性?

最佳答案

这是 built in now !

describe("jasmine.objectContaining", function() {
var foo;

beforeEach(function() {
foo = {
a: 1,
b: 2,
bar: "baz"
};
});

it("matches objects with the expect key/value pairs", function() {
expect(foo).toEqual(jasmine.objectContaining({
bar: "baz"
}));
expect(foo).not.toEqual(jasmine.objectContaining({
c: 37
}));
});
});

或者,您可以使用外部检查,例如 _.has (包装myObject.hasOwnProperty(prop)):

var _ = require('underscore');
describe('my object', function() {
it('has these properties', function() {
var props = [
'property1',
'property2',
...
];
props.forEach(function(prop){
expect(_.has(myObject, prop)).toBeTruthy();
})
});
});

关于javascript - Jasmine 测试对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31528200/

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