2016-04-11 39 views
0

私はreact_on_rails gemを使用しているアプリを持っています。すべてがうまくレンダリングされます。私はテストを書くことモカ+ TestUtils + jsdomを使うようになったとき、私はエラーメッセージmocha TypeError:未定義の 'addEventListener'プロパティを読み取ることができません

TypeError: Cannot read property 'addEventListener' of undefined

を持っている私は、同様の設定と同じエラーメッセージhereで答えを見つけました。提案された指示に従ってください。そして今、私は反応・オン・レールからのエラーメッセージにぶつかった:

client/node_modules/react-on-rails/node_package/lib/ReactOnRails.js:238 
ReactOnRails.resetOptions(); 
^ 

ReferenceError: ReactOnRails is not defined 

私のアプリは複雑なものであるので、同じエラーメッセージを再現するために、私はアプリを反応させ、同じを使用ベアボーンを書きましたテストツール。

hello.jsx

import React from 'react'; 

export default class Hello extends React.Component { 

    render() { 
    return (
     <div> 
      <h1>Hello world</h1> 
     </div> 
    ); 
    }  
} 

私はNPを含める必要はありませんでしたtest.js

import Hello from '../hello.jsx'; 
import addons from 'react/addons'; 
const TestUtils = addons.addons.TestUtils; 
import React from 'react'; 
var jsdom = require('jsdom'); 
import assert from 'assert'; 
import ror from 'react-on-rails'; 

describe('render correctly', function() { 

    it('should render', function() { 
    let comp = TestUtils.renderIntoDocument(<Hello/>); 
    let h1 = TestUtils.findRenderedDOMComponentWithTag(comp, 'h1'); 
    assert.equal(h1.getDOMNode().textContent, 'Hello world'); 
    }); 

}); 

package.json

{ 
    "name": "react-testing", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "scripts": { 
    "test": "mocha --compilers js:babel-core/register test/tests.js --require test/setup.js" 
    }, 
    "author": "", 
    "license": "ISC", 
    "dependencies": { 
    "react": "^0.14.8", 
    "react-dom": "^15.0.1", 
    "react-on-rails": "^5.2.0", 
    "react-tools": "^0.13.3" 
    }, 
    "devDependencies": { 
    "babel-core": "^6.7.4", 
    "babel-loader": "^6.2.4", 
    "babel-preset-es2015": "^6.6.0", 
    "babel-preset-react": "^6.5.0", 
    "glob": "^4.3.5", 
    "jsdom": "^3.1.1", 
    "mocha": "2.3.3", 
    "mocha-jsdom": "^0.2.1", 
    "mocha-lcov-reporter": "0.0.1", 
    "webpack": "^1.12.14" 
    } 
} 

このパッケージにはreact-on-railsパッケージが含まれています。しかし、ポイントは私がアプリでそれを持っていたので、レールで反応して持っていたエラーメッセージを再現することです。

私はnpm test走ったとき、私は正確に同じエラーメッセージました:

node_modules/react-on-rails/node_package/lib/ReactOnRails.js:238 
ReactOnRails.resetOptions(); 
^ 

ReferenceError: ReactOnRails is not defined 

任意のアイデアはどのようにこれを取り組むために?

答えて

0

私は、MochaテストにReactOnRails npmライブラリを含めることは適切ではないと思います。 ReactOnRailsで真の統合テストを行う場合は、capybaraテストを使用してください。例については、https://github.com/shakacode/react_on_rails/tree/master/spec/dummyの/ spec/dummyを参照してください。

私はReact on Railsの主著者です。

+0

私のレールアプリでは、ReactOnRails npmライブラリを明示的には含んでいませんでした。私は、npmライブラリをインクルードすることで、ずっと簡単な設定で問題をシミュレートしようとしていました。私がカピバラの使用を選択しなかった理由は、実行時間のテストのためです。単体テストには理想的ではありません。だから私はTestUtils.Similate関数を使って、私はそれを高速に実行できるはずだと思った。それは正しい道ではありませんか? – swingfuture

+0

@swingfutureこれを理解するには、http://github.com/shakacode/react_on_rails/とhttps://github.com/shakacode/react-webpack-rails-のコミュニティの両方に役立つので、共有してください。チュートリアル。 – justingordon

関連する問題