2016-12-05 2 views
0

Schreiben einiger Komponententests für eine App und Treffen einer Wand im beschreibenden Block.enzym mocha AssertionError: erwartet 0 bis gleich 21

/* eslint-env mocha */ 
const React = require('react') 
const chai = require('chai') 
const { expect } = chai 
const Search = require('../js/Search') 
const ShowCard = require('../js/ShowCard') 
const enzyme = require('enzyme') 
const { shallow } = enzyme 
const data = require('../public/data') 

describe('<Search />',() => { 
    it('should render as many shows as there are data for',() => { 
    const wrapper = shallow(<Search />) 
    expect(wrapper.find(ShowCard).length).to.equal(data.shows.length) 
    console.log(wrapper.debug()) 
    }) 
}) 

Der Code in der Search-Komponente rendert Plakat wie folgt aus:

<div className='shows'> 
    {data.shows 
    .filter((show) => `${show.title} ${show.description}`.toUpperCase().indexOf(this.state.searchTerm.toUpperCase()) >= 0) 
    .map((show, index) => (
     <ShowCard {...show} key={index} id={index} /> 
))} 
</div> 

(wrapper.find(ShowCard).length)(data.shows.length) sollte gleich, aber es gibt diesen Fehler:

<Search /> should render as many shows as there are data for: 

    AssertionError: expected 0 to equal 21 
    + expected - actual 

    -0 
    +21 

    at Context.<anonymous> (App.spec.js:19:45) 

Gemäß dem obigen Fehler, Das Problem beginnt bei der Erwartung equal(data.shows.length), aber ich sehe nichts falsch damit. Kann mir jemand in die richtige Richtung zeigen?

Antwort

0

wow, wie peinlich. Ich hatte den Zustand des Eingabe-Wertes des Such-Konstruktors auf "Standard-Suchbegriff" eingestellt - wodurch Suchergebnisse so lange nicht angezeigt wurden, bis diese Zeichenfolge manuell aus der Eingabe entfernt wurde.

Ersetzen mit einem leeren String löste das Problem. Alle Tests bestehen jetzt.

Verwandte Themen