2015-12-23 13 views
11

Podczas pisania przypadku testowego w JEST dla pliku odpowiedzi otrzymuję ten błąd. Poniżej jest mój przykładowy kod:Błąd: Niezgodne naruszenie: findAllInRenderedTree (...): instancja musi być złożonym komponentem

search_basr_test.js

jest.autoMockOff(); 
global.React = require('react/addons'); 
jest.setMock('../stores/browser_store.jsx'); 
beforeEach(function() { 
    var search_bar = require('../components/search_bar.jsx'); 
}); 
var TestUtils = React.addons.TestUtils; 

describe("Test", function() { 
    it("should render Test", function() { 
      var test = TestUtils.renderIntoDocument(<search_bar/>); 
      expect(test).toBeDefined(); 
    }); 
    it("renders a list in a box with proper CSS classes", function() { 
      var test = TestUtils.renderIntoDocument(<search_bar/>); 
      let box = TestUtils.findRenderedDOMComponentWithTag(test, "div"); 
      expect(box.className).toEqual("sidebar__collapse"); 
    }); 
}); 

search_bar.jsx

return (
     <div> 
      <div 
       className='sidebar__collapse' 
       onClick={this.handleClose} 
      > 
       <span className='fa fa-angle-left'></span> 
      </div> 
      <span 
       className='search__clear' 
       onClick={this.clearFocus} 
      > 
       {'Cancel'} 
      </span> 
} 

Ktoś tam mi pomóc z tego ??

+0

Ten sam problem, naprawiłeś to? – novaline

Odpowiedz

5

Komponent kompozytowy jest składnikiem, który zawiera komponent reaktywny (nie div, span, ...). Metoda "findRenderedDOMComponentWithTag" przyjmuje parametr komponent złożony.

Spróbuj przeanalizować komponentu bezpośrednio w twoim przypadku (jQuery, JS, ...), ponieważ nie jest kompozytem jeden

4

Jest późno, ale ja po prostu wpadł na to, i nie znalazłem to świetna odpowiedź.

Moje rozwiązanie było stworzenie komponentu otoki w pliku testowego

import { Component } from "react"; 
class Wrapper extends Component { 
    render() { 
    return <YourComponent {...this.props} /> 
    } 
} 

i zamiast dzwonić

TestUtils.renderIntoDocument(
    <YourComponent /> 
); 

wezwanie

TestUtils.renderIntoDocument(
    <Wrapper /> 
); 

Rozwiązanie to zapewnia, że ​​składnik jest kompozytowy i nie jest funkcją bezpaństwową.

Mam nadzieję, że pomoże to każdemu w przyszłości!

+0

Tyle googlowania i ostatecznie dotarłem do rozwiązania. Dziękuję Ci!! – randallreedjr

Powiązane problemy