2017-03-21 19 views
9

Robię porównanie dwóch skomplikowanych obiektów i próbuję użyć metody .toEqual w oczekiwaniu.Jest test "Porównywane wartości nie mają różnicy wizualnej".

Oto moja próba:

it('check if stepGroups data in controlData matches data in liveData',() => { 
    var controlStore = data.controlStore 
    var liveStore 
    return getData().then(result => { 
     liveStore = new Store() 
     liveStore.loadData(JSON.parse(result)) 
     expect(controlStore).toEqual(liveStore) 
    }) 
}) 

zrobiłem diff między oczekiwaną a odebranej mocy i oboje wydają się być takie same. Co nadal może spowodować niepowodzenie tego testu? Czytałem w ładnym formacie (https://github.com/facebook/jest/issues/1622). Czy spotkałeś się z podobnymi sytuacjami?

Odpowiedz

9

W próbce kodu porównuje się dwie instancje Store, które zawierają pewne dane. Zatem nawet jeśli dane (result json w twoim przypadku) są takie same, to niekoniecznie oznacza to, że obie instancje kontenerów mogą być uznane za równe.

Powinno być możliwe zrobienie czegoś takiego jak expect(controlStore.getState()).toEqual(liveStore.getState()).

7

użycie spodziewać (JSON.stringify (controlStrore)). ToEqual (JSON.stringify (liveStore))

2

Prawdopodobnie próbuje ustawić metodę pośrednictwem lambda-funkcję w swojej klasie Store. Więc żart próbuje porównać do różnych funkcji, które zostały wygenerowane oddzielnie za każdym razem, gdy robisz new Store(). W rezultacie podnosi błąd, ale nie może wyświetlać różnicy, po prostu nie może drukować funkcji.

+0

Miałem podobny problem ... Podejrzewam, że rozwiązaniem jest porównanie funkcji w obiekcie. Byłem jednak usatysfakcjonowany, że pożądane właściwości były obecne, a zatem - wymagany kod został zwrócony –