# respondOnce

Only respond once with given overwrite. You can call `respondOnce` multiple consecutive times and it will start with the respond you defined last. If you only use `respondOnce` and the resource is called more times a mock has been defined than it defaults back to the original resource.

## Usage[​](#usage "Direct link to Usage")

```
mock.respondOnce(overwrites, { header, statusCode, fetchResponse })
```

## Parameters[​](#parameters "Direct link to Parameters")

| Name                                   | Type                 | Details                                                |
| -------------------------------------- | -------------------- | ------------------------------------------------------ |
| `overwrites`                           | `MockOverwrite`      | payload to overwrite the response                      |
| `params`<br />*optional*               | `MockResponseParams` | additional respond parameters to overwrite             |
| `params.header`<br />*optional*        | `Object`             | overwrite specific headers                             |
| `params.statusCode`<br />*optional*    | `Number`             | overwrite response status code                         |
| `params.fetchResponse`<br />*optional* | `Boolean`            | fetch real response before responding with mocked data |

## Example[​](#example "Direct link to Example")

respondOnce.js

```
async function getToDos () {
    await $('#todo-list li').waitForExist()
    return $$('#todo-list li').map(el => el.getText())
}

it('should demonstrate the respondOnce command', async () => {
    const mock = await browser.mock('https://todo-backend-express-knex.herokuapp.com/', {
        method: 'get'
    })

    mock.respondOnce([{
        title: '3'
    }, {
        title: '2'
    }, {
        title: '1'
    }])

    mock.respondOnce([{
        title: '2'
    }, {
        title: '1'
    }])

    mock.respondOnce([{
        title: '1'
    }])

    await browser.url('https://todobackend.com/client/index.html?https://todo-backend-express-knex.herokuapp.com/')
    console.log(await getToDos()) // outputs [ '3', '2', '1' ]
    await browser.url('https://todobackend.com/client/index.html?https://todo-backend-express-knex.herokuapp.com/')
    console.log(await getToDos()) // outputs [ '2', '1' ]
    await browser.url('https://todobackend.com/client/index.html?https://todo-backend-express-knex.herokuapp.com/')
    console.log(await getToDos()) // outputs [ '1' ]
    await browser.url('https://todobackend.com/client/index.html?https://todo-backend-express-knex.herokuapp.com/')
    console.log(await getToDos()) // outputs actual resource response
})
```
