- Get Started
- Product
- Resources
- Tools & SDKs
- Framework
- Reference
- Get Started
- Product
- Resources
- Tools & SDKs
- Framework
- Reference
6.2. Write Integration Tests
In this chapter, you'll learn about the medusaIntegrationTestRunner
utility function used to write integration tests.
medusaIntegrationTestRunner Utility#
The medusaIntegrationTestRunner
utility function is provided by the @medusajs/test-utils
package to create integration tests in your Medusa project. It runs a full Medusa application, allowing you test API routes, workflows, or other customizations.
For example:
The medusaIntegrationTestRunner
function accepts an object as a parameter. The object has a required property testSuite
.
testSuite
's value is a function that defines the tests to run. The function accepts as a parameter an object that has the following properties:
api
: a set of utility methods used to send requests to the Medusa application. It has the following methods:get
: Send aGET
request to an API route.post
: Send aPOST
request to an API route.delete
: Send aDELETE
request to an API route.
getContainer
: a function that retrieves the Medusa Container. Use thegetContainer().resolve
method to resolve resources from the Medusa Container.
The tests in the testSuite
function are written using Jest.
Jest Timeout#
Since your tests connect to the database and perform actions that require more time than the typical tests, make sure to increase the timeout in your test:
Run Tests#
Run the following command to run your tests:
test:integration
script in package.json
, refer to the Medusa Testing Tools chapter .This runs your Medusa application and runs the tests available under the src/integrations/http
directory.
Other Options and Inputs#
Refer to this reference in the Development Resources documentation for other available parameter options and inputs of the testSuite
function.
Database Used in Tests#
The medusaIntegrationTestRunner
function creates a database with a random name before running the tests. Then, it drops that database after all the tests end.
To manage that database, such as changing its name or perform operations on it in your tests, refer to the references in the Development Resources documentation.
Example Integration Tests#
The next chapters provide examples of writing integration tests for API routes and workflows.