Hone logo
Hone
Problems

Implementing Parameterized Tests in Jest with TypeScript

Parameterized tests allow you to run the same test logic with different input values, reducing code duplication and improving test coverage. This challenge will guide you through implementing parameterized tests in Jest using TypeScript, leveraging a library like jest-parameterized to achieve this. It's a valuable skill for writing maintainable and comprehensive test suites.

Problem Description

You are tasked with creating a Jest test suite for a function called add. The add function takes two numbers as input and returns their sum. You need to implement parameterized tests to verify the add function's correctness with various input combinations, including positive numbers, negative numbers, and zero. The goal is to avoid writing repetitive test cases and ensure thorough testing of the function's behavior across different scenarios. You should use jest-parameterized for this purpose.

What needs to be achieved:

  • Create a Jest test suite for the add function.
  • Implement parameterized tests using jest-parameterized.
  • Test the add function with a variety of input combinations (positive, negative, and zero).
  • Ensure all tests pass and demonstrate the effectiveness of parameterized testing.

Key Requirements:

  • Use TypeScript for the code.
  • Utilize jest-parameterized library. You'll need to install it: npm install --save-dev jest-parameterized
  • The add function is already defined (see below).
  • The test suite should be well-structured and readable.

Expected Behavior:

The test suite should execute all parameterized tests and assert that the add function returns the correct sum for each input combination. Any discrepancies between the expected and actual results should cause the test to fail.

Edge Cases to Consider:

  • Large positive and negative numbers.
  • Zero as one or both inputs.
  • Potential overflow issues (though not explicitly required to handle, consider it for robustness).

Examples

Example 1:

Input: add(2, 3)
Output: 5
Explanation: The function should return the sum of 2 and 3, which is 5.

Example 2:

Input: add(-1, 5)
Output: 4
Explanation: The function should return the sum of -1 and 5, which is 4.

Example 3:

Input: add(0, 0)
Output: 0
Explanation: The function should return the sum of 0 and 0, which is 0.

Constraints

  • The add function is defined as follows: function add(a: number, b: number): number { return a + b; }
  • You must use jest-parameterized.
  • All tests must pass.
  • The solution should be written in TypeScript.

Notes

  • jest-parameterized provides a describe block with a test function that accepts an array of test cases. Each test case is an object with args (the input values) and expected (the expected output).
  • Within the test function, you can access the input values using args.a and args.b (or whatever names you choose for your input parameters).
  • Focus on creating a clear and concise test suite that effectively demonstrates the use of parameterized tests.
  • Consider using expect(add(args.a, args.b)).toBe(args.expected) for assertions.
Loading editor...
typescript