r-sugi / nextjs-tdd-template

https://nextjs-tdd-templatestorybook-rsugis-projects.vercel.app
0 stars 0 forks source link

UT: Jestでテストする getServerSideProps #156

Closed r-sugi closed 3 months ago

r-sugi commented 3 months ago

User description

124


PR Type

Tests, Enhancement


Description


Changes walkthrough 📝

Relevant files
Tests
index.test.tsx
Add Jest tests for getServerSideProps function                     

src/pages/articles/[id]/_server/index.test.tsx
  • Added Jest tests for getServerSideProps.
  • Tested normal case for successful data retrieval.
  • Tested error cases for invalid parameters and fetch errors.
  • +126/-0 
    Enhancement
    index.tsx
    Enhance error handling in getServerSideProps                         

    src/pages/articles/[id]/_server/index.tsx
  • Enhanced error handling by using transformError.
  • Updated status code setting with formatted error.
  • +6/-4     

    💡 PR-Agent usage: Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    vercel[bot] commented 3 months ago

    The latest updates on your projects. Learn more about Vercel for Git ↗︎

    Name Status Preview Comments Updated (UTC)
    nextjs-tdd-template_storybook ✅ Ready (Inspect) Visit Preview 💬 Add feedback Aug 22, 2024 10:35am
    github-actions[bot] commented 3 months ago

    PR Reviewer Guide 🔍

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Key issues to review

    テストカバレッジ
    正常系と異常系の両方のシナリオをカバーしていますが、特定のエッジケースや例外的な振る舞いに対するテストが不足している可能性があります。特に、APIからの異常なレスポンス形式や、予期しないパラメータタイプが渡された場合の挙動について追加のテストが必要かもしれません。 エラーハンドリング
    `transformError` 関数がエラーオブジェクトを適切に変換し、適切なステータスコードをレスポンスに設定しているかの確認が必要です。特に、異なるタイプのエラーが適切にハンドリングされているかどうかを検証することが重要です。
    github-actions[bot] commented 3 months ago

    PR Code Suggestions ✨

    CategorySuggestion                                                                                                                                    Score
    Best practice
    型安全性を向上させるために、context オブジェクトに適切な型を使用してください。 ___ **context オブジェクトを any
    型でキャストする代わりに、適切な型を定義して使用してください。これにより、型安全性が向上し、ランタイムエラーのリスクが減少します。** [src/pages/articles/[id]/_server/index.test.tsx [21-28]](https://github.com/r-sugi/nextjs-tdd-template/pull/156/files#diff-f9913c81fa8938ca5b1923afea7517dbd12294df9320783c7f95223bef206d53R21-R28) ```diff -const context = { +interface ContextType { + res: { + statusCode: number; + }; + params: { + id: string; + }; +} + +const context: ContextType = { res: { statusCode: 200, }, params: { id: "1", }, - // biome-ignore lint/suspicious/noExplicitAny: -} as any; +}; ```
    Suggestion importance[1-10]: 8 Why: Defining a specific type for the `context` object improves type safety and reduces the risk of runtime errors, which is a significant improvement in TypeScript code.
    8
    モック関数の呼び出し回数を正確に検証してください。 ___ **fetcherMock が呼び出されたかどうかを確認するテストは、toHaveBeenCalled() の代わりに toHaveBeenCalledTimes(1)
    を使用して、正確な呼び出し回数を検証してください。** [src/pages/articles/[id]/_server/index.test.tsx [42]](https://github.com/r-sugi/nextjs-tdd-template/pull/156/files#diff-f9913c81fa8938ca5b1923afea7517dbd12294df9320783c7f95223bef206d53R42-R42) ```diff -expect(fetcherMock).toHaveBeenCalled(); +expect(fetcherMock).toHaveBeenCalledTimes(1); ```
    Suggestion importance[1-10]: 7 Why: Using `toHaveBeenCalledTimes(1)` provides more precise verification of the function call count, enhancing the accuracy of the test.
    7
    エラーハンドリングの一貫性を向上させるために、ステータスコードの設定方法を改善してください。 ___ **res オブジェクトの statusCode
    を直接変更するのではなく、エラーハンドリング関数を通じてステータスコードを設定する方法を検討してください。これにより、エラーハンドリングの一貫性が向上します。** [src/pages/articles/[id]/_server/index.test.tsx [48]](https://github.com/r-sugi/nextjs-tdd-template/pull/156/files#diff-f9913c81fa8938ca5b1923afea7517dbd12294df9320783c7f95223bef206d53R48-R48) ```diff +// ステータスコードの設定はエラーハンドリング関数を通じて行います。 +// 例: setStatusCode(context, 200); expect(context.res.statusCode).toBe(200); ```
    Suggestion importance[1-10]: 5 Why: While the suggestion promotes consistency in error handling, it is not crucial for the current test setup, thus providing a moderate improvement.
    5
    Maintainability
    不要なテストフックを削除してください。 ___ **`beforeAll` フックが空です。テストの初期化が必要ない場合は、このフックを削除してください。** [src/pages/articles/[id]/_server/index.test.tsx [11]](https://github.com/r-sugi/nextjs-tdd-template/pull/156/files#diff-f9913c81fa8938ca5b1923afea7517dbd12294df9320783c7f95223bef206d53R11-R11) ```diff -beforeAll(() => {}); +// beforeAll フックが削除されました。 ```
    Suggestion importance[1-10]: 6 Why: Removing an unnecessary `beforeAll` hook improves code maintainability by eliminating redundant code.
    6