私は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
任意のアイデアはどのようにこれを取り組むために?
私のレールアプリでは、ReactOnRails npmライブラリを明示的には含んでいませんでした。私は、npmライブラリをインクルードすることで、ずっと簡単な設定で問題をシミュレートしようとしていました。私がカピバラの使用を選択しなかった理由は、実行時間のテストのためです。単体テストには理想的ではありません。だから私はTestUtils.Similate関数を使って、私はそれを高速に実行できるはずだと思った。それは正しい道ではありませんか? – swingfuture
@swingfutureこれを理解するには、http://github.com/shakacode/react_on_rails/とhttps://github.com/shakacode/react-webpack-rails-のコミュニティの両方に役立つので、共有してください。チュートリアル。 – justingordon