与Sinon有否定负比赛的方法?具体来说,一个对象没有给定的属性?
谢谢!
答案 0 :(得分:2)
目前没有内置的匹配器。
Sinon
允许您创建custom matchers,因此您可以创建自己的文件,以下是基于the built-in has
matcher的doesNotHave
的一个文件:
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
})
答案 1 :(得分:1)
您不能为此使用sinon
,而必须使用类似chai
的东西。
您会这样做:
cont { expect } = require("chai");
expect({ foo: true }).to.not.have.keys(['bar']);
答案 2 :(得分:0)
我刚刚意识到可以在对象的形状中指定undefined
进行检查:
sinon.assert.match(actual, {
shouldNotExists: undefined
});
不能完全确定它是否100%有效,但似乎可以完成工作。