myrotvorets / fake-knex-client

Fake Client for Knex.js

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

fake-knex-client

Fake Client for Knex.js

Usage

import * as knexpkg from 'knex';
import mockKnex from 'mock-knex';
import { FakeClient } from '@myrotvorets/fake-knex-client';

describe('...', function () {
    let db: knexpkg.Knex;

    before(function () {
        const { knex } = knexpkg.default;
        db = knex({ client: FakeClient });
        mockKnex.mock(db);
    });

    // ...
});

Why

We discovered that our integration tests, which involve a real database, don't work smoothly alongside our functional tests that use mock-knex with the actual database driver when we employ mocha as our test runner. This issue likely arises because mocha, unlike jest, doesn't isolate each test, resulting in some unexpected behavior.

One potential solution we considered was to utilize a distinct database driver for functional tests, such as better-sqlite3. However, this approach would introduce a significant and unnecessary dependency to our project.

About

Fake Client for Knex.js

License:MIT License


Languages

Language:JavaScript 70.6%Language:TypeScript 29.4%