如何在反应路由器v4中对组件进行单元测试?我没有成功尝试使用jest和酶对重定向进行单元测试.
我的组件:
const AppContainer = ({ location }) =>
(isUserAuthenticated()
? <AppWithData />
: <Redirect
to={{
pathname: "/login",
state: { from: location }
}}
/>);
Run Code Online (Sandbox Code Playgroud)
我尝试测试它:
function setup() {
const enzymeWrapper = mount(
<MemoryRouter initialEntries={["/"]}>
<AppContainer />
</MemoryRouter>
);
return {
enzymeWrapper
};
}
jest.mock("lib/authAPI", () => ({
isUserAuthenticated: jest.fn(() => false)
}));
describe("AppContainer component", () => {
it("renders redirect", () => {
const { enzymeWrapper } = setup();
expect(enzymeWrapper.find("<Redirect></Redirect>")).toBe(true);
});
});
Run Code Online (Sandbox Code Playgroud) 我刚刚将 .net 核心应用程序从版本 2.2 升级到 3。在 startup.cs 的 ConfigureServices 方法中,我需要解析身份验证服务使用的服务。我正在使用“services.BuildServiceProvider()”“构建”所有服务,但 .net core 3 抱怨创建额外服务副本的方法,并建议我将依赖注入服务作为“配置”的参数。我不知道这个建议是什么意思,我想了解它。
public virtual void ConfigureServices(IServiceCollection services)
{
// Need to resolve this.
services.AddSingleton<IManageJwtAuthentication, JwtAuthenticationManager>();
var sp = services.BuildServiceProvider(); // COMPLAINING HERE!!
var jwtAuthManager = sp.GetRequiredService<IManageJwtAuthentication>();
services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(c =>
{
c.TokenValidationParameters = new TokenValidationParameters
{
AudienceValidator = jwtAuthManager.AudienceValidator,
// More code here...
};
}
}
Run Code Online (Sandbox Code Playgroud) 使用带有订阅的乐观UI是否有意义?
所以基本上:
addChannelMutation({
variables: { name: eventValue },
optimisticResponse: {
__typename: "Mutation",
addChannel: {
__typename: "Channel",
id: data.channels.length,
name: eventValue
}
},
update: (store, { data: { addChannel } }) => {
// Read the data from our cache for this query.
const data = store.readQuery({ query: channelsListQuery });
// Add our comment from the mutation to the end.
data.channels.push(addChannel);
// Write our data back to the cache.
store.writeQuery({ query: channelsListQuery, data });
}
}).then(res => {});
Run Code Online (Sandbox Code Playgroud)
它将同一项添加两次,触发重复的密钥异常。因此,乐观的ui对于订阅是否有意义?
所以我有一个需要某种非可空类型的函数.在调用函数之前,我检查输入参数是否不为null,但显然,typescript无法理解并且抱怨说:
'HermiteOctreeNode |类型的参数 undefined'不能赋值给'HermiteOctreeNode'类型的参数.
类型'undefined'不能分配给'HermiteOctreeNode'类型.
if (node.nodeType !== NODE_TYPE_LEAF && node.nodeType !== NODE_TYPE_PSEUDO) {
for (let i = 0; i < node.children.length; i++) {
if (node.children[i] != null) {
rebuildOctreeNode(node, /* node.children[i] HERE /*, i);
}
}
Run Code Online (Sandbox Code Playgroud) reactjs ×2
apollo ×1
asp.net-core ×1
c# ×1
null ×1
react-router ×1
typescript ×1
unit-testing ×1