New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

mock-knex

Package Overview
Dependencies
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mock-knex

a knex mock adapter for simulating a db during testing

  • 0.4.13
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
66K
increased by12.92%
Maintainers
1
Weekly downloads
 
Created
Source

mock-knex

A mock knex adapter for simulating a database during testing, especially useful when used in combination with fixture-factory.

Knex Support

Currently tested on knex 0.8 through 3.0, should operate on any version of knex but may have issues with untested releases. Please file an issue if you come across any issues.

Installation

$ npm install mock-knex --save-dev

Usage

for Mocking Knex

var knex = require('knex');
var mockDb = require('mock-knex');
var db = knex({
    client: 'sqlite',
});

mockDb.mock(db);

... run tests ...

for Unmocking

... run tests ...

mockDb.unmock(db);

for Tracking queries with knex

... mock knex ...

var tracker = require('mock-knex').getTracker();

tracker.install();

tracker.on('query', function checkResult(query) {
  expect(query.method).to.equal('first');
  query.response([
    {
      fielda : 'A',
      fieldb : 'B'
    },
    {
      fielda : 'C',
      fieldb : 'D'
    },
    {
      fielda : 'E',
      fieldb : 'F'
    }
  ]);
});

knex.table('table').first('fielda', 'fieldb').then(function checkFirstArrResults(model) {
  expect(model.fielda).to.equal('A');
  expect(model.fieldb).to.equal('B');
  tracker.uninstall();
  done();
});

for Tracking queries with Bookshelf

... mock knex ...

var tracker = require('mock-knex').getTracker();

tracker.install();

tracker.on('query', function sendResult(query) {
  query.response([
    {
      id : 1,
      foo : 'bar'
    }
  ]);
});

Model.forge({ id : 1 }).fetch()
  .then(function fetchResult(model) {
    expect(model).to.be.an.instanceof(Model);
    expect(model.get('id')).to.equal(1);
    expect(model.get('foo')).to.equal('bar');
    tracker.uninstall();
    done();
  });

for Tracking multiple successive queries

... mock knex ...
... enable tracking ...

tracker.on('query', function sendResult(query, step) {
  [
    function firstQuery() {
      expect(query.sql).to.equal(... some SQL string ...);
      query.response([{id: 1}]);
    },
    function secondQuery() {
      expect(query.sql).to.equal(... some SQL string ...);
      query.response([{id: 2}]);
    }
  ][step - 1]();
});

More Examples?

Checkout the Tests

API

require('mock-knex')

MethodArgumentsReturnsDescription
mock(knex)
knex
initialized knex client
-Attaches mocked client to knex instance
unmock(knex)-Detaches mocked client from knex instance
getTracker()-TrackerReturns query Tracker instance

Tracker

The tracker enables you to catch and respond to queries that occur during testing, see Test for more examples.

MethodArgumentsReturnsDescription
install()--Enables query tracking mock on mocked knex client
uninstall()--Disables query tracking mock on mocked knex client. Also resets 'step' counter.
on('query', callback(query, step))
callback
A function that gets executed on 'query' event.
query
Query Details object
step
Query execution call counter starting from 1. Increases after every 'query' event emitting. Gets resetted on calling uninstall().
-Add event listener for 'query' event. It gets executed for each query that should end up in database. Instead of this callback gets executed and its up to you to assert queries and mock database responses.

Query Details

The object containing query details that is being sent to knex database dialect on query execution. Object properties signature matches with knex toSQL() output with additional method returns(values).

Property / MethodArgumentsReturnsDescription
bindingsArraySQL query parameters
methodStringMethod name to be executed (e.g. 'select', 'update', 'delete', 'commit', 'rollback' adn etc.).
sqlStringParameterized SQL query string to be executed. Look
optionsObjectUnknown purpose
transactingBooleanWhether or not the query was executed from within a transaction
reject(Error)
Error
The Error, string or instance of Error, which represents why the result was rejected
- Function that needs to be called to mock database query result for knex.
response(values, options)
values
An array of mock data to be returned by database. For Bookshelf this is mostly array of objects. Knex could return any type of data.
options
stream
Is this a stream response, defaults to false
- Function that needs to be called to mock database query result for knex.

Running Tests

$ npm install
$ docker-compose up -d
$ make test-suite

Keywords

FAQs

Package last updated on 06 Dec 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc