【发布时间】:2020-09-02 11:29:03
【问题描述】:
在 Storybook 中使用 MockedProvider 似乎没有返回任何内容。
将我的组件包装在 MockedProvider 中时,它不再抛出没有 Apollo 客户端的错误。所以这证明了 MockProvider “有效”
预期结果:
以下钩子应该返回模拟中的数据:
const { loading, error, data } = useQuery(LATEST_SELL_SIGNALS)
实际结果:
第一次渲染时加载为true,第二次渲染时加载为false
数据是undefined
错误是undefined
加载道具正在工作的事实也应该表明 MockedProvider 正在运行。
示例故事:
import React from 'react'
import { MockedProvider } from '@apollo/react-testing'
import { LATEST_SELL_SIGNALS } from '~/common/queries'
import LatestSells from './LatestSells'
const mocks = [
{
request: {
query: LATEST_SELL_SIGNALS,
},
result: {
data: {
yourData: { name: 'Storybook Data' },
},
},
},
]
export default {
title: 'Sales Components'
}
export const latest_sells = () => {
return (
<MockedProvider mocks={mocks}>
<LatestSells />
</MockedProvider>
)
}
LATEST_SELL_SIGNALS 是这个文件的位置:
import { gql } from 'apollo-boost'
export const LATEST_SELL_SIGNALS = gql`
query {
latestSellSignalsList(orderBy: createdAt_DESC, first: 10) {
items {
name
ticker
boughtAt
soldAt
}
}
}
`
我正在包装的组件正在使用这样的反应钩子:
const { loading, error, data } = useQuery(LATEST_SELL_SIGNALS)
查询的导入在组件中与在模拟中相同
请注意,这一切都适用于我的普通 Apollo Provider,我只是遇到了 MockProvider 的问题,没有做这件事。
组件。效果也很好
版本 3.1.4
【问题讨论】:
标签: apollo react-apollo storybook