Tìm kiếm trang web

reactjs - Không thể giải cấu trúc thuộc tính 'desks' của '(0 , _react.useContext)(...)' vì nó không xác định


Tôi cố gắng giả lập DeskContext vì nó có các bàn làm việc và checkIfUserPresent khi useContext được gọi. Nhưng tôi gặp lỗi này:

Cannot destructure property 'desks' of '(0 , _react.useContext)(...)' as it is undefined
TypeError: Cannot destructure property 'desks' of '(0 , _react.useContext)(...)' as it is undefined.

Đây là khi tôi chạy bài kiểm tra này:

it('It should have a reserved button because user is not present', () => {
render(<Desk desk={deskWithNoReservation} dateOfConsultation={dateInTheFuture()}/>)

        const buttonElement = screen.getByText('Réserver')
    
        expect(buttonElement).toBeInTheDocument()
    })

Đây là mã của tôi:

...
jest.mock('../context/DeskContext', () => ({
DeskContext:{
   desks: [{
      deskNumber: 11,
      reservation: "mocked name"
   }],
   checkIfUserPresent: () => {
      return false
   },
}
}))

jest.mock('./ModalWindow', () => ({ ModalWindow: () => 'Réserver' }));

describe('Test for Desk component', () => {

    it('It should have a reserved button because user is not present', () => {
        render(<Desk desk={deskWithNoReservation} dateOfConsultation={dateInTheFuture()}/>)
    
        const buttonElement = screen.getByText("Réserver")
    
        expect(buttonElement).toBeInTheDocument()
    })

...

Trong lớp 'DeskComponent' của tôi, đây là dòng (dòng đầu tiên của component) gây ra lỗi: "const {desks, checkIfUserPresent}=useContext(DeskContext)"

Đây là lớp DeskContext:

import { createContext } from "react"

export const DeskContext = createContext({})

Bạn có biết phải làm gì để định nghĩa bàn làm việc và kiểm tra xem người dùng có SP không cho mã tiếp theo không? Cảm ơn.

Để xác định các bàn làm việc và kiểm tra xem người dùng có SP có mặt để vượt qua bài kiểm tra không?

Câu trả lời #1

Chỉ cần sử dụng provider trong render và không cần giả lập, nó vẫn hoạt động!

Câu trả lời #2

Bạn phải bọc đối tượng bàn bằng provider trong render, vì vậy của bạn sẽ là một cái gì đó như

    render(<DeskProvider><Desk desk={deskWithNoReservation} dateOfConsultation={dateInTheFuture()}/><DeskProvider/>)