Appearance
Unit Testing in RPGJS Project
Unit testing is an essential part of ensuring the reliability and correctness of your RPGJS project. This guide will walk you through the process of setting up and running unit tests using the vitest
testing framework.
Steps
Follow these steps to set up and run unit tests for your RPGJS project:
1. Install Dependencies
You need to install vitest
,jsdom
, canvas
and @rpgjs/testing
packages. These packages will be used for testing and providing a simulated DOM environment for your tests.
bash
npm install @rpgjs/testing vitest jsdom canvas --save-dev
2. Create a Test Folder
Create a __test__
folder within the module where you want to add unit tests. For example, if you want to add tests for the main
module, create a __tests__
folder within the main
module.
3. Add Test Files
Inside the __test__
folder, create .spec.ts
files for your unit tests. These files will contain your actual test cases.
4. Write Unit Tests
In your .spec.ts
file, you can write unit tests using the provided RPGJS testing utilities along with the vitest
framework. Here's an example of how you can structure your unit tests:
typescript
import { RpgPlayer, RpgModule, RpgServer } from '@rpgjs/server';
import { testing, clear } from '@rpgjs/testing';
import { beforeEach, afterEach, test, expect } from 'vitest';
import player from '../player';
import { RpgClientEngine } from '@rpgjs/client';
@RpgModule<RpgServer>({
player
})
class RpgServerModule { }
let currentPlayer: RpgPlayer;
let client: RpgClientEngine
beforeEach(async () => {
const fixture = await testing([
{
server: RpgServerModule
}
]);
const clientFixture = await fixture.createClient();
currentPlayer = clientFixture.player;
client = clientFixture.client;
});
test('test name player', () => {
expect(currentPlayer).toBeDefined();
expect(currentPlayer.name).toBe('YourName')
});
afterEach(() => {
clear();
});
typescript
import { RpgPlayer, type RpgPlayerHooks, Control, Components } from '@rpgjs/server'
const player: RpgPlayerHooks = {
onConnected(player: RpgPlayer) {
player.name = 'YourName'
}
}
export default player
5. Update package.json
Add a test script in your package.json
to run your unit tests using vitest
. This script should reference the vitest
configuration file.
json
"scripts": {
"test": "npx vitest --config node_modules/@rpgjs/compiler/src/test/vitest.config.ts"
}
6. Run Tests
To run your unit tests, execute the following command in your terminal:
bash
npm test
This will initiate the unit tests using the vitest
framework, and you'll see the test results in your terminal.