핵심 요점
- 
비순수한 컴포넌트
new Date()와 같은 비순수한 함수는 호출할 때마다 다른 결과를 선택하므로, 테스트 결과의 일관성이 없음
 - 
해결책 - 의존성 주입
- 비순수한 함수의 결과를 prop으로 전달하여 컴포넌트를 예측 가능하게 만들고, 테스트 시 특정 날짜를 제어
 
 - 
기본 매개변수
- 기본 매개변수 사용으로 오늘 날짜의 기본 동작을 유지하면서, 테스트에서 유연성을 제공
 
 
개선된 예시
function Date({ date = new Date() }) {
  const [date, setDate] = React.useState(date)
  return (
    <input
      type="date"
      onChange={(e) => setDate(e.target.value)}
      defaultValue={date}
    />
  )
}
function Random({ randomizer = Math.random }) {
  const [state, setState] = React.useState(randomizer())
  return <div>{state}</div>
}
테스트
describe('Date Component', () => {
  it('should update state on date change', () => {
    render(<Date date={new Date('2023-01-01')} />)
    const input = screen.getByRole('textbox')
    expect(input.value).toBe('2023-01-01')
  })
})
describe('Random Component', () => {
  it('should render a random number', () => {
    const mockRandomizer = () => 0.5
    render(<Random randomizer={mockRandomizer} />)
    const div = screen.getByText('0.5')
    expect(div).toBeInTheDocument()
  })
})