在过去的几个星期里,我成功地在我的nextjs应用程序中实现了typesense。我已经用react测试库/jest写了很多测试。
如果我运行我的测试,我不想调用真正的类型感知后端,我想手动模拟响应,所以我能够改变返回的数据。
我如何模拟/监视typesense来阻止对搜索后端的呼出?(我在另一台服务器上设置了一个docker)我如何定义对象我想回来电话吗?
我的设置:
- nextjs page 'Home'
- 内部,我在子组件周围构建了一个包装器,我在其中装入了'InstantSearch'组件和一个TypesenseInstantSearchAdapter
页面:
function Home(props: Props) {
...basic setup;
return (
<InstantSearchWrapper index={SEARCH_INDEX.ITEMS} searchApiKey={user?.searchApiKey}>
... Components I want to mount
</InstantSearchWrapper>
);
}
InstantSearchWrapper:
export function InstantSearchWrapper(props: InstantSearchWrapperProps) {
...setup TypesenseInstantSearchAdapter;
return (
<InstantSearch indexName={index} searchClient={adapter.searchClient}>
<Configure hitsPerPage={hitsPerPage} facetFilters={memoizedFacetFilters()} index={index} />
{props.children}
</InstantSearch>
);
}
由于Typesense -instantsearch-adapter使用的是使用axios的Typesense -js,所以你可以使用axios-mock-adapter来模拟对Typesense的请求。
typesense-js测试套件有一些例子:https://github.com/typesense/typesense-js/blob/master/test/Typesense/Collections.spec.js