私は冗談を使用して、Jest Tutorial Pageから基本的な例を起動しようとしています、冗談は/
Link.tsx
import * as React from 'react';
const STATUS = {
NORMAL: 'normal',
HOVERED: 'hovered',
};
interface theProps {
page:string
}
export default class Link extends React.Component<theProps,any> {
constructor(props) {
super(props);
this._onMouseEnter = this._onMouseEnter.bind(this);
this._onMouseLeave = this._onMouseLeave.bind(this);
this.state = {
class: STATUS.NORMAL,
};
}
_onMouseEnter() {
this.setState({class: STATUS.HOVERED});
}
_onMouseLeave() {
this.setState({class: STATUS.NORMAL});
}
render() {
return (
<a
className={this.state.class}
href={this.props.page || '#'}
onMouseEnter={this._onMouseEnter}
onMouseLeave={this._onMouseLeave}>
{this.props.children}
</a>
);
}
}
test.tsx
import * as React from 'react';
import Link from '../app/Link';
import * as renderer from 'react-test-renderer';
it('Link changes the class when hovered',() => {
const component = renderer.create(
<Link page="http://www.facebook.com">Facebook</Link>
);
let tree = component.toJSON();
expect(tree).toMatchSnapshot();
// manually trigger the callback
tree.props.onMouseEnter();
// re-renderingf
tree = component.toJSON();
expect(tree).toMatchSnapshot();
// manually trigger the callback
tree.props.onMouseLeave();
// re-rendering
tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
を反応させ、活字体のチュートリアルの例では/ typescriptですコンパイルエラーを反応させます
しかし、テストがjest
で正常に実行されても、WebpackとIntelliJの両方が行について不平を言っています:小道具はタイプ{ [propName: string]: string }
を持つオブジェクトとして Unresolved function or method onMouseLeave()
この種のは理にかなって、私はこれらの警告/エラーメッセージをスキップ含めることができるものはありますか?
「any」を入れて動作させました。汚れていて、私はまだそれについて混乱しています.tree.props.onMouseEnter' –
はい、私のReact.HTMLPropsのインターフェイス のtree.propsは非常にハッキーで誤解を招く、 発見/発見を期待していた。私は運動から学んだこと は小道具が取り込まれます ある小道具「成就」 そのハンドラ、 もツリー/ツリーアイテムをトリガー ので、あなたはその存在をテストすることができコンポーネント/要素 を作成/呼び出しますDOM要素のみ、または文字列... とその子の 'inner-elements'が 'treeItem'の子の子に見つかるはずです 'query?'結果。 –
Dan
もし(そのような機能が存在するなら) 疑似sqlx: "からtree.children select item where item.type == 'a'とitem.propsで照会することができました。HREF == '#HOME'」 か、他 injsLike: ( tree.children .ofType() .find(X => x.type === '' && Xを期待しています。 props.href == '#HOME') ).toBeSomething(); –
Dan