sfl*_*che 30 javascript jasmine
我想做什么
describe('my object', function() {
it('has these properties', function() {
expect(Object.keys(myObject)).toEqual([
'property1',
'property2',
...
]);
});
});
Run Code Online (Sandbox Code Playgroud)
但是当然会Object.keys返回一个数组,根据定义它是有序的...我更喜欢这个测试通过而不管属性排序(这对我来说很有意义,因为无论如何都没有对象键排序的规范......(至少直至ES5)).
如何验证我的对象具有它应该具有的所有属性,同时还要确保它没有丢失任何属性,而不必担心以正确的顺序列出这些属性?
Pla*_*ato 44
它现在已经内置了!
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
}));
});
});
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用外部检查,如_.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();
})
});
});
Run Code Online (Sandbox Code Playgroud)
Jor*_*ing 12
最简单的解决方案?分类.
var actual = Object.keys(myObject).sort();
var expected = [
'property1',
'property2',
...
].sort();
expect(actual).toEqual(expected);
Run Code Online (Sandbox Code Playgroud)
小智 7
it('should contain object keys', () => {
expect(Object.keys(myObject)).toContain('property1');
expect(Object.keys(myObject)).toContain('property2');
expect(Object.keys(myObject)).toContain('...');
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35960 次 |
| 最近记录: |