@loopback/docs
Version:
Documentation files rendered at [https://loopback.io](https://loopback.io)
546 lines (250 loc) • 9.49 kB
Markdown
---
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) > [@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 & 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>