码迷,mamicode.com
首页 > 其他好文 > 详细

[React Testing] Test Drive Assertions with Dates in React

时间:2020-05-02 20:57:29      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:string   redirect   out   block   equal   title   form   async   click   

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

标签:string   redirect   out   block   equal   title   form   async   click   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!