Odpowiedzi:
Dla spodziewać , .equal
będzie porównanie obiektów zamiast ich danych, aw twoim przypadku to dwie różne tablice.
Użyj .eql
, aby głęboko porównać wartości. Sprawdź ten link .
Lub możesz użyć .deep.equal
do symulacji tego samego jak .eql
.
Lub w twoim przypadku możesz chcieć to sprawdzić .members
.
W przypadku stwierdzeń, których możesz użyć .deepEqual
, link .
to.deep.equal(['a','b'])
wydaje się nie działać. jednak to.have.all.members(['a','b'])
robi. tak kłopotliwe…
Spróbuj użyć głębokiego Equal. Porówna zagnieżdżone tablice, a także zagnieżdżone Json.
expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
Proszę odnieść się do głównej strony dokumentacji .
expect([1, 5, 10].sort()).to.deep.equal([1, 10, 5])
Oto jak używać chai do głębokiego testowania tablic asocjacyjnych.
Miałem problem próbuje twierdzić, że dwie asocjacyjne tablice były równe. Wiem, że tak naprawdę nie należy ich używać w javascript, ale pisałem testy jednostkowe wokół starszego kodu, który zwraca odwołanie do tablicy asocjacyjnej. :-)
Zrobiłem to, definiując zmienną jako obiekt (nie tablicę) przed wywołaniem funkcji:
var myAssocArray = {}; // not []
var expectedAssocArray = {}; // not []
expectedAssocArray['myKey'] = 'something';
expectedAssocArray['differentKey'] = 'something else';
// legacy function which returns associate array reference
myFunction(myAssocArray);
assert.deepEqual(myAssocArray, expectedAssocArray,'compare two associative arrays');
.deepEqual()
( chaijs.com/api/assert ).