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-dev2. 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 player5. 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 testThis will initiate the unit tests using the vitest framework, and you'll see the test results in your terminal.