Мы пишем тесты для программы. Мы хотим написать функциональный тест, который проверяет, что вывод программы соответствует некоторому ожиданию. Возвращаемый объект представляет собой сложный объект JS (с вложенными объектами, многими свойствами... и т.д.).
Мы хотим проверить, что это, очевидно, соответствует тому, что нам нужно. До сих пор мы "просматривали" объект и ожидаемый результат, проверяя каждое свойство и каждый вложенный объект. Это очень громоздко, и нам было интересно, есть ли библиотека, которая "построит" все тесты, основанные только на объекте. Что-то вроде этого, например.
var res = {
a: {
alpha: [1,2,3],
beta: "Hello",
gamma: "World"
},
},
b: 123,
c: "It depends"
}
};
var expectation = {
a: {
alpha: [1,2,4],
beta: "Hello",
gamma: "World"
},
},
b: 123,
c: "It depends"
}
};
assert(res, expectation) // -> Raises an error because res[a][b][2] is different from expectation[a][b][2].
[В этом примере я упростил сложность нашего объекта...]
Я должен настаивать на том, что нам нужен фрагмент кода, который достаточно умен, чтобы рассказать нам, что отличает, а не просто сказать нам, что два объекта разные. Теперь мы о глубоком равенстве, но мы ничего не нашли, что на самом деле говорит о различиях.