Sinon - 确保对象没有属性

Mr *_*kél 5 sinon

有没有办法和诗乃进行负赛呢?具体来说,一个对象没有给定的属性?

谢谢!

Bri*_*ams 4

目前还没有内置的匹配器。

Sinon允许您创建自定义匹配器,以便您可以创建自己的匹配器,这是一个doesNotHave基于内置has匹配器的匹配器

import * as sinon from 'sinon';

const doesNotHave = (prop) => sinon.match(function (actual) {
  if(typeof value === "object") {
    return !(prop in actual);
  }
  return actual[prop] === undefined;
}, "doesNotHave");

test('properties', () => {
  const obj = { foo: 'bar' };
  sinon.assert.match(obj, sinon.match.has('foo'));  // SUCCESS
  sinon.assert.match(obj, doesNotHave('baz'));  // SUCCESS
})
Run Code Online (Sandbox Code Playgroud)