首页 > 其他 > 详细

[React Testing] Test Drive Assertions with Dates in React

时间:2020-05-02 22:08:02      阅读:45      评论:0      收藏:0      [点我收藏+]

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

原文:https://www.cnblogs.com/Answer1215/p/12819224.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!