我正在尝试history.push在新useHistory钩子上模拟react-router并使用@testing-library/react. 我只是像这里的第一个答案一样嘲笑模块:How to test components using new react router hooks?
所以我在做:
//NotFound.js
import * as React from 'react';
import { useHistory } from 'react-router-dom';
const RouteNotFound = () => {
const history = useHistory();
return (
<div>
<button onClick={() => history.push('/help')} />
</div>
);
};
export default RouteNotFound;
Run Code Online (Sandbox Code Playgroud)
//NotFound.js
import * as React from 'react';
import { useHistory } from 'react-router-dom';
const RouteNotFound = () => {
const history = useHistory(); …Run Code Online (Sandbox Code Playgroud) reactjs jestjs react-router react-router-dom react-testing-library
在测试扩展类时,测试使用某些参数调用原始方法(来自基类)时遇到问题。我要测试的类是:
// ApiDataSource.js
import { RESTDataSource } from "apollo-datasource-rest";
export default class ApiDataSource extends RESTDataSource {
constructor() {
super();
this.baseURL = 'test';
}
//We add the authorization params to the get method
async get(path, params = {}, init = {}) {
return super.get(
path,
{
...params,
app_id: "test app id",
app_key: "test app key",
},
init
);
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,我想模拟super.get()断言,当ApiDataSource.get()被调用时,super会使用授权参数调用该方法。
就像是:
// ApiDataSource.test.js
import ApiDataSource from './ApiDataSource'
// ...
test("adds the authorization parameters to …Run Code Online (Sandbox Code Playgroud) 我想要实现的是我有一个.proto文件:
message Request {
Error error = 1;
bool success = 2;
}
message Error {
int32 status = 1;
string message = 2;
}
Run Code Online (Sandbox Code Playgroud)
我对其进行编译,以便为客户端和服务生成文件。然后,当我想设置grpc生成的内容时setError(),我必须传递给函数什么?(匹配错误消息)。一个对象,例如:
{
status: 200,
message: "Success!"
}
Run Code Online (Sandbox Code Playgroud)
不起作用...有效的是:
const error = new Client.Error();
error.setMessage('Something');
error.setStatus(400);
Run Code Online (Sandbox Code Playgroud)
然后,如果我有一条请求消息:
const request = new Client.Request()
request.setError(error)
Run Code Online (Sandbox Code Playgroud)
这可行,但我想知道是否可以直接将对象传递给 setError,而不必单独设置每个字段......
如果未找到路线,我正在尝试呈现“未找到”页面。我将路线分成模块。因此,当我执行 switch 语句时,在 switch 的底部添加未找到的页面,例如:
const AccessRoutes = () => {
return (
<React.Fragment>
<Route path="/login" exact component={Login}/>
<Route path="/register" exact component={Register} />
<Route path="/forgot-password" exact component={ForgotPassword}/>
</React.Fragment>
)
}
export default () => {
return (
<Switch>
<AccessRoutes/>
<Route render={() => <div>Not found</div>}
</Switch>
)
}
Run Code Online (Sandbox Code Playgroud)
当您输入不在 上的路径时,未找到的路径永远不会匹配AccessRoutes,例如/hey显示空白屏幕。如果我放置路由而不将它们包装在另一个组件中,它就可以工作。
我缺少什么?