是的,Asymmetric Matchers可以通过调用expect
函数和toContain
或toNotContain
匹配器来检查函数参数中是否包含或排除指定的项。
例如,考虑以下功能:
function addNumbers(x, y, numbersToAdd) {
let sum = x + y;
for (let number of numbersToAdd) {
sum += number;
}
return sum;
}
我们可以使用以下测试来检查addNumbers
的行为是否正确:
describe("addNumbers", () => {
it("should add two numbers and a list of numbers", () => {
const numbersToAdd = [2, 3, 5];
expect(addNumbers(2, 3, numbersToAdd)).toEqual(15);
});
it("should not add numbers that are not in the list", () => {
const numbersToAdd = [2, 3, 5];
expect(addNumbers(2, 3, numbersToAdd)).not.toContain(4);
});
it("should add numbers that are in the list", () => {
const numbersToAdd = [2, 3, 5];
expect(addNumbers(2, 3, numbersToAdd)).toContain(5);
});
});
在第一个测试中,我们使用toEqual
匹配器验证addNumbers
函数计算的总和是否等于期望值。
在第二个测试中,我们使用not.toContain
匹配器来验证函数的结果中是否包含任何不在numbersToAdd
数组中的项。
在第三个测试中,我们使用toContain
匹配器来验证函数的结果中是否包含一个在numbersToAdd
数组中的项。