0.7.2 • Published 5 months ago

mock-server-api v0.7.2

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

mock-server-api

A project to facilitate the use of Mountebank

The key points for this project are:

  1. Mountebank - server used to run the mocked API

Configurations

To use this project the easiest way is to use the /sample-project as it already contains a package.json configured and the structure to initiate the mocked api.

src/mconfig.ts

  • configuration file with required values

src/stubs

src/stubs/index.ts

  • file that load and configure all stubs packages

src/index.ts

  • file responsible to communicate with the Mountebank and configure the mock server

Required configurations

  • On the command line inside the base folder of the repository, run: npm i to install everything

Run steps using

  • On the command line run: npm run mb

  • On an new command line run: npm run mock

    • Every time that its necessary to update the mock server it is just this last command again.

Integrating with another project:

  • An project can copy all the sample project inside of it and make it available to others as unique project, with only a few configuration options.

  • Structure example:

The current mock-server project

  • Inside /mocks/stubs there are some folders that can be discarded, they are there to be used as a sample;

There is two methods of generating the mock:

  1. from any index.ts inside a folder in /mock/stubs export the stubs as: export const stubs
    1. This stubs const is a mapper of stubs as { anyStubName: {} as StubData } as StubCollection
    2. For better understanding see the file @types/index.ts there is a lot of definitions including StubData and StubCollection
  2. from any index.ts inside a folder in /mock/stubs export the apis as: export const apis
    1. A better example is implemented on the folder /mocks/stubs/projects there is use of urlParams, generated fields and query functions;

Query filters options (using list-total model api)

There are some options for query filters they are:

  • "CONTAINS" : the query param name must be equal to the param inside the object, the query param value must be inside the object param value

  • any other string: the same as "CONTAINS" but it will search for equality;

  • array param, type: the 'param' is the param name in the object, the 'type' follow the above rules

  • (funtion) : the funcion will have this structure: (list: any[], value: any, config: ConfigInjection) => any[];

    • list: array of values that would be returned without this filter,
    • value: the value of the query param;
    • config: object containing all the values passed by Mountebank
  • queryPriority: set the priority of an query, if the priority is greater than 9 that query will be executed after extract the list length, default value is 5.

  • list-total/utils.ts there are 2 functions that could be used to add query function: sort = used to sort the result list, offset = used for pagination, a sample of use is on /mocks/stubs/projects

THE NEWEST SUPER COOL WAY TO CREATE RESPONSES:

On the sample-project there is this folder withImport with this StubCollection:

The main point is to use an exported function inside the stub response, it will only need to pass the path to the function on the following format: "/pathToFolder/InsideStubs/Location/FileName.functionExported"

0.7.2

5 months ago

0.7.1

5 months ago

0.5.0

7 months ago

0.7.0

5 months ago

0.6.1

7 months ago

0.6.0

7 months ago

0.4.4

12 months ago

0.4.1

12 months ago

0.4.0

12 months ago

0.4.3

12 months ago

0.4.2

12 months ago

0.3.0

1 year ago

0.2.1

1 year ago

0.2.2

1 year ago

0.1.1

3 years ago

0.1.0

3 years ago