[React Testing] Test Drive Assertions with Dates in React

Posted answer1215

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[React Testing] Test Drive Assertions with Dates in React相关的知识,希望对你有一定的参考价值。

Just make sure the date is in a range then it is fine

 

import React from react
import {render, fireEvent, waitFor} from @testing-library/react
import {Redirect as MockRedirect} from react-router
import {savePost as mockSavePost} from ../api
import {Editor} from ../post-editor-05-dates

jest.mock(react-router, () => {
  return {
    Redirect: jest.fn(() => null),
  }
})

jest.mock(../api)

afterEach(() => {
  jest.clearAllMocks()
})

test(renders a form with title, content, tags, and a submit button, async () => {
  mockSavePost.mockResolvedValueOnce()
  const fakeUser = {id: user-1}
  const {getByLabelText, getByText} = render(<Editor user={fakeUser} />)
  const fakePost = {
    title: Test Title,
    content: Test content,
    tags: [tag1, tag2],
  }
  const preDate = new Date().getTime()

  getByLabelText(/title/i).value = fakePost.title
  getByLabelText(/content/i).value = fakePost.content
  getByLabelText(/tags/i).value = fakePost.tags.join(, )
  const submitButton = getByText(/submit/i)

  fireEvent.click(submitButton)

  expect(submitButton).toBeDisabled()

  expect(mockSavePost).toHaveBeenCalledWith({
    ...fakePost,
    date: expect.any(String),
    authorId: fakeUser.id,
  })
  expect(mockSavePost).toHaveBeenCalledTimes(1)

  const postDate = new Date().getTime()
  const date = new Date(mockSavePost.mock.calls[0][0].date).getTime()
  expect(date).toBeGreaterThanOrEqual(preDate)
  expect(date).toBeLessThanOrEqual(postDate)

  await waitFor(() => expect(MockRedirect).toHaveBeenCalledWith({to: /}, {}))
})

 

以上是关于[React Testing] Test Drive Assertions with Dates in React的主要内容,如果未能解决你的问题,请参考以下文章

[React Testing] Test componentDidCatch handler Error Boundaries

[React Testing] Improve Test Confidence with the User Event Module

[React Testing] Use Generated Data in Tests with tests-data-bot to Improve Test Maintainability(代码片段

在 react-testing-library 中,渲染应该只调用一次吗?

如何使用 react-testing-library 测试锚的 href

在 react-testing-library 中按 Enter 提交表单不起作用