0

こんにちは、フックのテストを始めたばかりなので、本当に迷っています。答えを見つけようとしましたが、結果はありませんでした。

問題は、useEffectこのコードからどのようにテストできるかということです。

コード:

const [ range, setRange ] = useState(DATE_OPTIONS.LAST_30_DAYS)
const [ isLoading, setIsLoading ] = useState(true)

const startLoading = () => setIsLoading(true)
const stopLoading = () => setIsLoading(false)

useEffect(() => {
    startLoading()
    fetchYearlyOptiDrive(range, objectId)
        .then(stopLoading)
        .catch(stopLoading)
}, [range, objectId])

そして、コードからテストしたいのはLoadingIndicator、小道具をチェックするisLoadingことtrueですfalse

<LoadingIndicator {...{ isLoading }} />

テスト:

    test('should return the default value', () => {
        const wrapper = mount(<OptiDriveCard {...props} />)
        expect(wrapper.find('LoadingIndicator').props).toBeTruthy()
    })

エラー:

不変違反: 要素の型が無効です: 文字列 (組み込みコンポーネントの場合) またはクラス/関数 (複合コンポーネントの場合) が必要ですが、取得: 未定義

なにか提案を?

4

1 に答える 1

1

コンポーネントに渡された値を確認するには、enzyme propメソッドを使用できます。あなたの場合:

expect(wrapper.find('LoadingIndicator').prop('isLoading')).toBe(true);
于 2019-09-26T15:50:58.767 に答える