我正在使用buster.js和“expect”断言。我希望断言至少在以下一个方面取得成功:
expect(req.body.data._id).toBe('foo bar baz');
或
expect(req.body.data.id).toBe('foo bar baz');
我该怎么做?
答案 0 :(得分:2)
看看你想要的relevant documentation
expect([req.body.data._id, req.body.data.id]).toContain('foo bar baz');
答案 1 :(得分:2)
虽然@glenn jackman的答案足够好,但为了获得更多与语义相关的阅读,你可以使用Array.prototype.some函数和一些isEqual
模拟。例如:
var isEqual = function(first) { return function(second) { return first === second; }; }
[1,2,3].some(isEqual(2); // true
expect([1,2,3].some(isEqual(2))).toBeTrue(); // passed
expect([1,2,3].some(isEqual(4))).toBeTrue(); // failed
或者你可以通过这种方式走得更远:
var someOf = function(array) { return array.some.bind(array); };
expect(someOf([1,2,3])(isEqual(1))).toBeTrue(); // passed
摆脱括号:
var someOf = function(array) {
return { isEqual: function(x) { return array.some(isEqual(x)); } };
}
expect(someOf([1,2,3]).isEqual(4)).toBeTrue();
我相信您可以使用buster.referee.add创建自定义“期望”,从而做得更多。
答案 2 :(得分:0)
expect(req.body.data._id || req.body.data.id).toBe('foo bar baz');