@tramvai/test-unit v3.40.28
Tramvai test unit
Helpers library for writing tramvai specific unit-tests
It might be even more useful when used with @tramvai/test-mocks
Installation
npm i --save-dev @tramvai/test-unit
How to
Testing reducers
import { testReducer } from '@tramvai/test-unit';
it('test', async () => {
const { dispatch, getState } = testReducer(reducer);
expect(getState()).toEqual([]);
dispatch(event(1));
expect(getState()).toEqual([1]);
});
@inline src/state/testReducer.spec.ts
Testing actions
import { testAction } from '@tramvai/test-unit';
it('test', async () => {
const { run } = testAction(action);
expect(await run(true)).toBe('hello');
expect(await run(false)).toBe('world');
});
@inline src/state/testAction.spec.ts
Testing tramvai module
Testing module in isolation
import { testModule } from '@tramvai/test-unit';
it('test', async () => {
const { di, module, runLine } = testModule(TestModule);
expect(module).toBeInstanceOf(TestModule);
expect(di.get('testToken')).toEqual({ a: 1 });
// Run only specific command line in order to execute handlers for this line inside module
await runLine(commandLineListTokens.generatePage);
});
Testing module in conjunction with other modules
import { createTestApp } from '@tramvai/test-unit';
it('test', async () => {
const { app } = await createTestApp({ modules: [TestModule, DependentModule] });
// get tokens from di implemented by module
expect(app.di.get('testToken')).toEqual({ a: 1 });
});
@inline src/module/testModule.spec.ts
Testing app
Testing app works only in node-environment. See jest docs
import { testApp } from '@tramvai/test-unit';
it('test', async () => {
const { request, render } = await testApp(app);
const response = await request('/').expect(200).expect('X-App-Id', 'unit-app');
expect(response.text).toMatch('<html class="no-js" lang="ru">');
expect(response.text).toMatch('<div class="application">rootPage</div>');
expect(response.text).toMatch('<script>var initialState =');
const rootPage = await render('/');
expect(rootPage.application).toEqual('rootPage');
const secondPage = await render('/second/');
expect(secondPage.application).toEqual('secondPage');
expect(secondPage.initialState).toEqual({
stores: expect.objectContaining({
environment: {
FRONT_LOG_API: 'test',
},
router: expect.objectContaining({
currentUrl: expect.objectContaining({
path: '\\u002Fsecond\\u002F',
}),
}),
}),
});
});
@inline src/app/testApp.spec.ts
Adding providers to DI
Most of the helpers accepts option providers
which allows to redefine already existing providers or add new.
For example, passing providers
to helper testAction
allows to access this provider inside action itself:
import { createAction } from '@tramvai/core';
import { testAction } from '@tramvai/test-unit';
const action = createAction({
name: 'action',
fn: (_, __, { test }) => {
console.log(test); // token value
},
deps: {
test: 'token name',
},
});
it('test', async () => {
const { run } = testAction(action, {
providers: [
{
provide: 'token name',
useValue: 'token value',
},
],
});
});
Create app only for testing
import { createTestApp } from '@tramvai/test-unit';
it('test', async () => {
const { app } = await createTestApp({ modules: [TestModule, DependentModule] });
// get tokens from di implemented by module
expect(app.di.get('testToken')).toEqual({ a: 1 });
});
@inline src/app/createTestApp.spec.ts
2 days ago
7 days ago
7 days ago
8 days ago
8 days ago
8 days ago
8 days ago
11 days ago
11 days ago
12 days ago
12 days ago
16 days ago
16 days ago
17 days ago
17 days ago
17 days ago
19 days ago
18 days ago
18 days ago
19 days ago
19 days ago
19 days ago
22 days ago
23 days ago
23 days ago
23 days ago
23 days ago
24 days ago
26 days ago
26 days ago
1 month ago
1 month ago
1 month ago
1 month ago
1 month ago
2 months ago
2 months ago
2 months ago
2 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
8 months ago
8 months ago
6 months ago
8 months ago
7 months ago
5 months ago
6 months ago
6 months ago
6 months ago
6 months ago
10 months ago
6 months ago
6 months ago
9 months ago
10 months ago
9 months ago
10 months ago
10 months ago
7 months ago
7 months ago
6 months ago
6 months ago
7 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
6 months ago
6 months ago
7 months ago
7 months ago
7 months ago
6 months ago
6 months ago
6 months ago
7 months ago
8 months ago
8 months ago
7 months ago
8 months ago
8 months ago
9 months ago
9 months ago
9 months ago
7 months ago
9 months ago
7 months ago
7 months ago
7 months ago
10 months ago
5 months ago
5 months ago
8 months ago
8 months ago
5 months ago
8 months ago
7 months ago
9 months ago
8 months ago
8 months ago
10 months ago
6 months ago
9 months ago
7 months ago
9 months ago
9 months ago
8 months ago
9 months ago
9 months ago
9 months ago
8 months ago
8 months ago
8 months ago
9 months ago
8 months ago
9 months ago
8 months ago
9 months ago
9 months ago
8 months ago
9 months ago
8 months ago
8 months ago
9 months ago
7 months ago
7 months ago
7 months ago
7 months ago
7 months ago
11 months ago
11 months ago
11 months ago
1 year ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
12 months ago
12 months ago
12 months ago
12 months ago
11 months ago
11 months ago
11 months ago
12 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago