如何使用模擬Service Worker來測試vue apollo?
P粉696891871
P粉696891871 2024-03-27 11:37:32
0
1
429

我已經設定了模擬服務工作者來測試我的組合功能,但收到錯誤:找不到 id 預設的 Apollo 用戶端。如果您位於組件 setup. 之外,請使用 ProvideApolloClient()。

我想我應該使用provideApolloClient,但是將其貼到搜尋中卻什麼也沒得到。

文件顯示在元件和模擬模式中註入資料(未取得該部分)。但我不是在測試元件,而是在嘗試測試自訂組合函數(掛鉤)並確保它與 useQuery 正確互動。

P粉696891871
P粉696891871

全部回覆(1)
P粉821274260

我認為您收到的錯誤訊息表明 Apollo 無法完全渲染,因為它無法從上下文中找到任何 Apollo 用戶端。如果您呼叫的程式碼沒有 ApolloProvider 且以 client 作為其父級,則可能會發生這種情況。即使您正在測試鉤子,您仍然必須渲染包裹在 Apollo 的 Provider 中的鉤子,並根據 Apollo 的文檔提供 client 實例。看看你的 React hook 測試庫建議如何做。

這是我建議使用 @testing-library 的範例/react-hooks

import { ApolloProvider } from '@apollo/client'
import { renderHook } from '@testing-library/react-hooks'
import { client } from './apollo-client'
import { myHook } from './myHook'

it('runs the hook as expected', () => {
  renderHook(() => myHook(), {
    wrapper({ children }) {
      return {children}
    }
  })
  // actions and assertions here
})

我知道這不會直接轉化為 Vue,但我確信有一種替代方法可以在 Vue 中測試鉤子。希望這能激勵您朝著正確的方向前進。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板