Sat*_*GVK 5 testing mongodb jestjs
我正在使用 jest 编写一个测试用例来测试从方法返回的数据。该方法返回非重复元素的数组。现在我正在尝试在 jest 中使用 expect() 来测试从该方法返回的数组是否只有唯一元素。
从方法返回的数组
arr = [ 'Pizza' ,'Burger' , 'HotDogs'] // All elements are unique
Run Code Online (Sandbox Code Playgroud)
有没有像下面这样的笑话匹配器来检查数组中的非重复元素?
expect(arr).toBeUnique()
Run Code Online (Sandbox Code Playgroud)
或者应该完成使用现有匹配器的任何逻辑?
Yev*_*kov 10
没有建立在检查数组是否具有唯一值的方法上,但我建议做这样的事情:
const goods = [ 'Pizza' ,'Burger' , 'HotDogs'];
const isArrayUnique = arr => Array.isArray(arr) && new Set(arr).size === arr.length; // add function to check that array is unique.
expect(isArrayUnique(goods)).toBeTruthy();
Run Code Online (Sandbox Code Playgroud)
您可以使用expect.extend将您自己的匹配器添加到 Jest。
例如:
expect.extend({
toBeDistinct(received) {
const pass = Array.isArray(received) && new Set(received).size === received.length;
if (pass) {
return {
message: () => `expected [${received}] array is unique`,
pass: true,
};
} else {
return {
message: () => `expected [${received}] array is not to unique`,
pass: false,
};
}
},
});
Run Code Online (Sandbox Code Playgroud)
并使用它:
const goods = [ 'Pizza' ,'Burger' , 'HotDogs'];
const randomArr = [ 'Pizza' ,'Burger' , 'Pizza'];
expect(goods).toBeDistinct(); // Passed
expect(randomArr).toBeDistinct(); // Failed
Run Code Online (Sandbox Code Playgroud)