【发布时间】:2015-07-26 01:07:48
【问题描述】:
我正在尝试测试一个需要 react-router 与 app.js 分开的 React 组件。
我有一个使用 mixin Router.Navigation 进行重定向的组件,如下所示:
var React = require('react'),
Router = require('react-router');
var Searchbar = React.createClass({
mixins : [Router.Navigation],
searchTerm: function(e) {
if (e.keyCode !== 13) {
return;
}
this.context.router.transitionTo('/someRoute/search?term=' + e.currentTarget.value)
},
render: function() {
return (
<div className="searchbar-container">
<input type="search" placeholder="Search..." onKeyDown={this.searchTerm} />
</div>
)
}
});
module.exports = Searchbar;
我试图为此编写一个测试,但碰壁了。除了我无法测试 transitionTo 是否按预期工作之外,我还在 Jest 测试中遇到了以下错误消息:
警告:上下文类型失败:router 未在 Searchbar 中指定所需的上下文。
有谁知道我如何摆脱警告和奖励问题,如何测试转换是否按预期工作?
我已经对此和 Github 上的对话进行了研究:https://github.com/rackt/react-router/issues/400 是我发现的最接近该问题的。看起来我需要单独导出路由器,但是在没有警告的情况下运行组件测试似乎有很多开销https://github.com/rackt/react-router/blob/master/docs/guides/testing.md
真的是这样吗?
【问题讨论】:
-
您找到解决方案了吗?
-
没有,我已经成功了,但我仍在努力。这不是特别紧急,因为它们只是警告消息,但它们很烦人。不过我会整理一下。
-
嗨@Tom 我终于找到了解决方案,因为 BinaryMuse 的最后一段让我走上了正轨。我用代码发布了自己的答案。
-
谢谢你让我知道伙计!
标签: reactjs react-router jestjs