78 lines
2.0 KiB
Markdown
78 lines
2.0 KiB
Markdown
# Class: MockClient
|
|
|
|
Extends: `undici.Client`
|
|
|
|
A mock client class that implements the same api as [MockPool](MockPool.md).
|
|
|
|
## `new MockClient(origin, [options])`
|
|
|
|
Arguments:
|
|
|
|
* **origin** `string` - It should only include the **protocol, hostname, and port**.
|
|
* **options** `MockClientOptions` - It extends the `Client` options.
|
|
|
|
Returns: `MockClient`
|
|
|
|
### Parameter: `MockClientOptions`
|
|
|
|
Extends: `ClientOptions`
|
|
|
|
* **agent** `Agent` - the agent to associate this MockClient with.
|
|
|
|
### Example - Basic MockClient instantiation
|
|
|
|
We can use MockAgent to instantiate a MockClient ready to be used to intercept specified requests. It will not do anything until registered as the agent to use and any mock request are registered.
|
|
|
|
```js
|
|
import { MockAgent } from 'undici'
|
|
|
|
// Connections must be set to 1 to return a MockClient instance
|
|
const mockAgent = new MockAgent({ connections: 1 })
|
|
|
|
const mockClient = mockAgent.get('http://localhost:3000')
|
|
```
|
|
|
|
## Instance Methods
|
|
|
|
### `MockClient.intercept(options)`
|
|
|
|
Implements: [`MockPool.intercept(options)`](MockPool.md#mockpoolinterceptoptions)
|
|
|
|
### `MockClient.close()`
|
|
|
|
Implements: [`MockPool.close()`](MockPool.md#mockpoolclose)
|
|
|
|
### `MockClient.dispatch(options, handlers)`
|
|
|
|
Implements [`Dispatcher.dispatch(options, handlers)`](Dispatcher.md#dispatcherdispatchoptions-handler).
|
|
|
|
### `MockClient.request(options[, callback])`
|
|
|
|
See [`Dispatcher.request(options [, callback])`](Dispatcher.md#dispatcherrequestoptions-callback).
|
|
|
|
#### Example - MockClient request
|
|
|
|
```js
|
|
import { MockAgent } from 'undici'
|
|
|
|
const mockAgent = new MockAgent({ connections: 1 })
|
|
|
|
const mockClient = mockAgent.get('http://localhost:3000')
|
|
mockClient.intercept({ path: '/foo' }).reply(200, 'foo')
|
|
|
|
const {
|
|
statusCode,
|
|
body
|
|
} = await mockClient.request({
|
|
origin: 'http://localhost:3000',
|
|
path: '/foo',
|
|
method: 'GET'
|
|
})
|
|
|
|
console.log('response received', statusCode) // response received 200
|
|
|
|
for await (const data of body) {
|
|
console.log('data', data.toString('utf8')) // data foo
|
|
}
|
|
```
|