Я хочу написать основанный на свойствах модульный тест, который доказывает, что целочисленное вычитание не является коммутативным. У меня это с мокко и быстрая проверка :
const fc = require('fast-check')
describe('The subtraction', () => {
it('is not commutative', () => {
fc.assert(
fc.property(
fc.integer(), fc.integer(), (a, b) => a - b !== b - a
)
)
})
})
После нескольких запусков я заметил, что он не работает, когда условие a === b && a <= 0
выполняется. Однако я не уверен, есть ли какие-либо другие условия, которые не соответствуют a - b !== b - a
, поэтому я не уверен, правильно ли исключать это конкретное условие.
Как мне написать тест? Должен ли я исключить конкретное условие? Или я должен проверить, что на a - b !== b - a
верно хотя бы для двух заданных значений? Или есть другой способ проверить это?
Также приветствуются примеры использования любых других видов библиотек javascript для тестирования на основе свойств.