MySQL
Install
| npm install @testcontainers/mysql --save-dev
|
Examples
These examples use the following libraries:
Choose an image from the container registry and substitute IMAGE
.
Execute a query
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | await using container = await new MySqlContainer(IMAGE).start();
const client = await createConnection({
host: container.getHost(),
port: container.getPort(),
database: container.getDatabase(),
user: container.getUsername(),
password: container.getUserPassword(),
});
const [rows] = await client.execute("SELECT 1 as res");
expect(rows).toEqual([{ res: 1 }]);
await client.end();
|
Execute a query inside the container
| await using container = await new MySqlContainer(IMAGE).start();
const result = await container.executeQuery("SELECT 1 as res");
expect(result).toEqual(expect.stringContaining("res\n1\n"));
|
With credentials
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | const username = "testUser";
const password = "testPassword";
const database = "testDB";
await using container = await new MySqlContainer(IMAGE)
.withUsername(username)
.withUserPassword(password)
.withDatabase(database)
.start();
expect(container.getConnectionUri()).toEqual(
`mysql://${username}:${password}@${container.getHost()}:${container.getPort()}/${database}`
);
await using rootContainer = await new MySqlContainer(IMAGE)
.withRootPassword(password)
.withDatabase(database)
.start();
expect(rootContainer.getConnectionUri(true)).toEqual(
`mysql://root:${password}@${rootContainer.getHost()}:${rootContainer.getPort()}/${database}`
);
|