2016-06-05 5 views
1
gefunden werden kann

Ich folge diesem Link zu überprüfen, wie Scherz Code testen Reagieren: https://facebook.github.io/jest/docs/tutorial-react.htmlwie facebook Scherz verwenden .jsx-Datei zu testen, Modul nicht

Alles finden, bis ich unsere testen möchten aktuelle Komponente. Out-Komponente wird wie folgt geschrieben:

let React = require('react'); 
var CheckboxWithLabel = React.createClass({ 
    getInitialState: function() { 
     return { 
      isChecked: false 
     } 
    }, 
    onChange: function(){ 
     this.setState({isChecked: !this.state.isChecked}); 
    }, 
    render: function(){ 
     return (
       <label> 
        <input 
         type="checkbox" 
         checked={this.state.isChecked} 
         onChange={this.onChange} 
        /> 
        {this.state.isChecked ? this.props.labelOn : this.props.labelOff} 
        </label> 
     ) 
    } 
}); 
module.exports = CheckboxWithLabel; 

Diese fast die gleiche wie die javasrcript Version innerhalb des Tutorials ist außer ich es geändert Format babel. Und jetzt, wenn ich dies mit:

jest.unmock("../CheckboxWithLabel"); 

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import TestUtils from 'react-addons-test-utils'; 
import CheckboxWithLabel from '../CheckboxWithLabel'; 

describe('CheckboxWithLabel',()=>{ 
    it('change the text after click',()=>{ 
     // Render a checkbox with label in the document 
     const checkbox = TestUtils.renderIntoDocument(
      <CheckboxWithLabel labelOn="On" labelOff="Off" /> 
     ); 
     const checkboxNode = ReactDOM.findDOMNode(checkbox); 
    // Verify that it's Off by default 
     expect(checkboxNode.textContent).toEqual('Off'); 

     // Simulate a click and verify that it is now On 
     TestUtils.Simulate.change(
      TestUtils.findRenderedDOMComponentWithTag(checkbox, 'input') 
     ); 
     expect(checkboxNode.textContent).toEqual('On'); 
    }); 
}); 

bekam ich diese Ausnahme:

Using Jest CLI v12.1.1, jasmine2, babel-jest 
FAIL __tests__/checkboxWithLabel-test.js 
● Runtime Error 
    - Error: Cannot find module '../CheckboxWithLabel' from 'checkboxWithLabel-test.js' 
     at Resolver.resolveModule (node_modules/jest-cli/node_modules/jest-resolve/src/index.js:117:17) 
     at Object.<anonymous> (__tests__/checkboxWithLabel-test.js:1:162) 

Dies ist package.json:

{ 
    "dependencies": { 
    "react": "~0.14.0", 
    "react-dom": "~0.14.0" 
    }, 
    "devDependencies": { 
    "babel-core": "^6.9.0", 
    "babel-jest": "^9.0.0", 
    "babel-polyfill": "*", 
    "babel-preset-es2015": "*", 
    "babel-preset-react": "*", 
    "jest-cli": "*", 
    "react-addons-test-utils": "~0.14.0" 
    }, 
    "scripts": { 
    "test": "jest" 
    }, 
    "jest": { 
    "unmockedModulePathPatterns": [ 
     "<rootDir>/node_modules/react/", 
     "<rootDir>/node_modules/react-dom/", 
     "<rootDir>/node_modules/react-addons-test-utils/" 
    ] 
    } 
} 

und .babelrc ist dies:

{ 
    "presets": ["es2015", "react"] 
} 

Da die meisten unserer aktuellen Code in .jsx geschrieben wird format, benutze objekt stil, nicht klassenstil, wie kann ich das mit scherz machen?

Dank

Antwort

2

Sie benötigen zusätzliche Einstellung Ihrer jest Optionen:

"jest": { 
    "moduleFileExtensions": [ 
    "js", 
    "jsx" 
    ], 
} 

Dieser Scherz-Dateien zu testen mit Js und .jsx Erweiterungen

ermöglichen
Verwandte Themen