UNPKG

@loopback/docs

Version:

Documentation files rendered at [https://loopback.io](https://loopback.io)

546 lines (250 loc) 9.49 kB
--- lang: en title: 'API docs: testlab' keywords: LoopBack 4.0, LoopBack 4, Node.js, TypeScript, OpenAPI sidebar: lb4_sidebar editurl: https://github.com/loopbackio/loopback-next/tree/master/packages/testlab permalink: /doc/en/lb4/apidocs.testlab.html --- <!-- Do not edit this file. It is automatically generated by API Documenter. --> [Home](./index.md) &gt; [@loopback/testlab](./testlab.md) ## testlab package A collection of test utilities we use to write LoopBack tests. ## Remarks Test utilities to help write LoopBack 4 tests: - `expect` - behavior-driven development (BDD) style assertions - `sinon` - test spies: functions recording arguments and other information for all of their calls - stubs: functions (spies) with pre-programmed behavior - mocks: fake methods (like spies) with pre-programmed behavior (like stubs) as well as pre-programmed expectations - Helpers for creating `supertest` clients for LoopBack applications - HTTP request/response stubs for writing tests without a listening HTTP server - Swagger/OpenAPI spec validation ## Classes <table><thead><tr><th> Class </th><th> Description </th></tr></thead> <tbody><tr><td markdown="1"> [TestSandbox](./testlab.testsandbox.md) </td><td markdown="1"> TestSandbox class provides a convenient way to get a reference to a sandbox folder in which you can perform operations for testing purposes. </td></tr> </tbody></table> ## Functions <table><thead><tr><th> Function </th><th> Description </th></tr></thead> <tbody><tr><td markdown="1"> [createClientForHandler(handler)](./testlab.createclientforhandler.md) </td><td markdown="1"> Create a SuperTest client connected to an HTTP server listening on an ephemeral port and calling `handler` to handle incoming requests. </td></tr> <tr><td markdown="1"> [createRestAppClient(app)](./testlab.createrestappclient.md) </td><td markdown="1"> Create a SuperTest client for a running RestApplication instance. It is the responsibility of the caller to ensure that the app is running and to stop the application after all tests are done. </td></tr> <tr><td markdown="1"> [createStubInstance(constructor)](./testlab.createstubinstance.md) </td><td markdown="1"> Creates a new object with the given functions as the prototype and stubs all implemented functions. Note: The given constructor function is not invoked. See also the stub API. This is a helper method replacing `sinon.createStubInstance` and working around the limitations of TypeScript and Sinon, where Sinon is not able to list private/protected members in the type definition of the stub instance and therefore the stub instance cannot be assigned to places expecting TType. See also - https://github.com/Microsoft/TypeScript/issues/13543 - https://github.com/DefinitelyTyped/DefinitelyTyped/issues/14811 </td></tr> <tr><td markdown="1"> [createUnexpectedHttpErrorLogger(expectedStatusCode)](./testlab.createunexpectedhttperrorlogger.md) </td><td markdown="1"> Creates a Logger that logs an Error if the HTTP status code is not expected </td></tr> <tr><td markdown="1"> [givenHttpServerConfig(customConfig)](./testlab.givenhttpserverconfig.md) </td><td markdown="1"> Create an HTTP-server configuration that works well in test environments. - Ask the operating system to assign a free (ephemeral) port. - Use IPv4 localhost `127.0.0.1` to avoid known IPv6 issues in Docker-based environments like Travis-CI. - Provide default TLS key &amp; cert when `protocol` is set to `https`<!-- -->. </td></tr> <tr><td markdown="1"> [httpGetAsync(urlString, agent)](./testlab.httpgetasync.md) </td><td markdown="1"> Async wrapper for making HTTP GET requests </td></tr> <tr><td markdown="1"> [httpsGetAsync(urlString, agent)](./testlab.httpsgetasync.md) </td><td markdown="1"> Async wrapper for making HTTPS GET requests </td></tr> <tr><td markdown="1"> [inject(dispatchFunc, options)](./testlab.inject.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [skipIf(skip, verb, name, args)](./testlab.skipif.md) </td><td markdown="1"> Helper function for skipping tests when a certain condition is met. </td></tr> <tr><td markdown="1"> [skipOnTravis(verb, name, args)](./testlab.skipontravis.md) </td><td markdown="1"> Helper function for skipping tests on Travis CI. </td></tr> <tr><td markdown="1"> [stubExpressContext(requestOptions)](./testlab.stubexpresscontext.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [stubHandlerContext(requestOptions)](./testlab.stubhandlercontext.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [stubServerRequest(options)](./testlab.stubserverrequest.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [stubServerResponse(request, onEnd)](./testlab.stubserverresponse.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_9.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_10.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_11.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_12.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_13.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_14.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_1.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_2.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_3.md) </td><td markdown="1"> JSON encoding does not preserve properties that are undefined As a result, deepEqual checks fail because the expected model value contains these undefined property values, while the actual result returned by REST API does not. Use this function to convert a model instance into a data object as returned by REST API </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_4.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_5.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_6.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_7.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [toJSON(value)](./testlab.tojson_8.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [validateApiSpec(spec)](./testlab.validateapispec.md) </td><td markdown="1"> </td></tr> </tbody></table> ## Interfaces <table><thead><tr><th> Interface </th><th> Description </th></tr></thead> <tbody><tr><td markdown="1"> [ExpressContextStub](./testlab.expresscontextstub.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [HandlerContextStub](./testlab.handlercontextstub.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [HostPort](./testlab.hostport.md) </td><td markdown="1"> An object that requires host and port properties </td></tr> <tr><td markdown="1"> [HttpOptions](./testlab.httpoptions.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [HttpsOptions](./testlab.httpsoptions.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [RestApplicationLike](./testlab.restapplicationlike.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [RestServerLike](./testlab.restserverlike.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [TestSandboxOptions](./testlab.testsandboxoptions.md) </td><td markdown="1"> Options for a test sandbox </td></tr> </tbody></table> ## Variables <table><thead><tr><th> Variable </th><th> Description </th></tr></thead> <tbody><tr><td markdown="1"> [expect](./testlab.expect.md) </td><td markdown="1"> </td></tr> </tbody></table> ## Type Aliases <table><thead><tr><th> Type Alias </th><th> Description </th></tr></thead> <tbody><tr><td markdown="1"> [Client](./testlab.client.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [ObservedResponse](./testlab.observedresponse.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [ShotCallback](./testlab.shotcallback.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [ShotResponseCtor](./testlab.shotresponsector.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [StubbedInstanceWithSinonAccessor](./testlab.stubbedinstancewithsinonaccessor.md) </td><td markdown="1"> </td></tr> <tr><td markdown="1"> [TestDefinition](./testlab.testdefinition.md) </td><td markdown="1"> A function defining a new test case or a test suite, e.g. `it` or `describe`<!-- -->. </td></tr> </tbody></table>