# MutableStubs

Added in 1.0.0-alpha04

*** ** * ** ***


```
public final class MutableStubs
```

<br />

*** ** * ** ***

## Summary

| ### Public methods |
|---|---|
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub<https://developer.android.com/reference/java/lang/Object.html, @https://developer.android.com/reference/androidx/annotation/NonNull R>` | `<R extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStubs#MutableStub(kotlin.Throwable)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Throwable.html defaultError)` Creates a new `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/package-summary#MutableStub(kotlin.Throwable)` that throws an exception if the queue is empty. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub<https://developer.android.com/reference/java/lang/Object.html, @https://developer.android.com/reference/androidx/annotation/NonNull R>` | `<R extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStubs#MutableStub(kotlin.Any)(R defaultResponse)` Creates a new `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/package-summary#MutableStub(kotlin.Any)` with a default return value used when the queue is empty. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/Stub<@https://developer.android.com/reference/androidx/annotation/NonNull T, @https://developer.android.com/reference/androidx/annotation/NonNull R>` | `<T extends https://developer.android.com/reference/java/lang/Object.html, R extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStubs#buildStub(kotlin.Function1)( @https://developer.android.com/reference/androidx/annotation/NonNull Function1<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub<@https://developer.android.com/reference/androidx/annotation/NonNull T, @https://developer.android.com/reference/androidx/annotation/NonNull R>, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html> builder )` Builder to create `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub`s. |
| `static final void` | `<R extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStubs#(androidx.health.connect.client.testing.stubs.MutableStub).enqueue(kotlin.collections.Iterable)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub<@https://developer.android.com/reference/androidx/annotation/NonNull ?, @https://developer.android.com/reference/androidx/annotation/NonNull R> receiver, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Iterable.html<@https://developer.android.com/reference/androidx/annotation/NonNull R> values )` Adds a new item to the `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub`'s queue. |
| `static final void` | `<R extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStubs#(androidx.health.connect.client.testing.stubs.MutableStub).enqueue(kotlin.Array)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub<@https://developer.android.com/reference/androidx/annotation/NonNull ?, @https://developer.android.com/reference/androidx/annotation/NonNull R> receiver, @https://developer.android.com/reference/androidx/annotation/NonNull R... values )` Adds a new item to the `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub`'s queue. |
| `static final void` | `<R extends https://developer.android.com/reference/java/lang/Object.html> https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStubs#(androidx.health.connect.client.testing.stubs.MutableStub).plusAssign(kotlin.Any)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub<@https://developer.android.com/reference/androidx/annotation/NonNull ?, @https://developer.android.com/reference/androidx/annotation/NonNull R> receiver, @https://developer.android.com/reference/androidx/annotation/NonNull R value )` Adds a new item to the `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub`'s queue. |

## Public methods

### MutableStub

Artifact: [androidx.health.connect:connect-testing](https://developer.android.com/jetpack/androidx/releases/health-connect) [View Source](https://cs.android.com/search?q=file:androidx/health/connect/client/testing/stubs/MutableStub.kt+function:MutableStub) Added in [1.0.0-alpha04](https://developer.android.com/jetpack/androidx/releases/health-connect#1.0.0-alpha04)

```
public static final @NonNull MutableStub<Object, @NonNull R> <R extends Object> MutableStub(@NonNull Throwable defaultError)
```

Creates a new `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/package-summary#MutableStub(kotlin.Throwable)` that throws an exception if the queue is empty.

Consider passing a default handler instead, so the exception is not created until necessary:

```
MutableStub { throw Exception() }
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Throwable.html defaultError` | The exception to throw if the queue is empty. |

### MutableStub

Artifact: [androidx.health.connect:connect-testing](https://developer.android.com/jetpack/androidx/releases/health-connect) [View Source](https://cs.android.com/search?q=file:androidx/health/connect/client/testing/stubs/MutableStub.kt+function:MutableStub) Added in [1.0.0-alpha04](https://developer.android.com/jetpack/androidx/releases/health-connect#1.0.0-alpha04)

```
public static final @NonNull MutableStub<Object, @NonNull R> <R extends Object> MutableStub(R defaultResponse)
```

Creates a new `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/package-summary#MutableStub(kotlin.Any)` with a default return value used when the queue is empty.

| Parameters |
|---|---|
| `R defaultResponse` | The default return value |

### buildStub

Artifact: [androidx.health.connect:connect-testing](https://developer.android.com/jetpack/androidx/releases/health-connect) [View Source](https://cs.android.com/search?q=file:androidx/health/connect/client/testing/stubs/MutableStub.kt+function:buildStub) Added in [1.0.0-alpha04](https://developer.android.com/jetpack/androidx/releases/health-connect#1.0.0-alpha04)

```
public static final @NonNull Stub<@NonNull T, @NonNull R> <T extends Object, R extends Object> buildStub(
    @NonNull Function1<@NonNull MutableStub<@NonNull T, @NonNull R>, Unit> builder
)
```

Builder to create `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub`s.

```kotlin
import androidx.health.connect.client.testing.stubs.MutableStub
import androidx.health.connect.client.testing.stubs.buildStub
import androidx.health.connect.client.testing.stubs.enqueue

val builderMutableStub =
    buildStub<Int, String> {
        enqueue("first")
        defaultHandler = { "Default" }
    }
builderMutableStub.next(request = 0) // Returns "first"
builderMutableStub.next(request = 0) // Returns "Default"
```

### enqueue

Artifact: [androidx.health.connect:connect-testing](https://developer.android.com/jetpack/androidx/releases/health-connect) [View Source](https://cs.android.com/search?q=file:androidx/health/connect/client/testing/stubs/MutableStub.kt+function:enqueue)

```
public static final void <R extends Object> enqueue(
    @NonNull MutableStub<@NonNull ?, @NonNull R> receiver,
    @NonNull Iterable<@NonNull R> values
)
```

Adds a new item to the `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub`'s queue.

```kotlin
import androidx.health.connect.client.testing.stubs.MutableStub
import androidx.health.connect.client.testing.stubs.buildStub
import androidx.health.connect.client.testing.stubs.enqueue

val builderMutableStub =
    buildStub<Int, String> {
        enqueue("first")
        defaultHandler = { "Default" }
    }
builderMutableStub.next(request = 0) // Returns "first"
builderMutableStub.next(request = 0) // Returns "Default"
```

```kotlin
import androidx.health.connect.client.testing.stubs.MutableStub
import androidx.health.connect.client.testing.stubs.enqueue

val mutableStub = MutableStub<Int, String>(defaultHandler = { it.toString() })
mutableStub.enqueue("zero")
mutableStub += "one" // += is equivalent to enqueue()
mutableStub.next(request = 42) // Returns "zero"
mutableStub.next(request = 42) // Returns "one"
mutableStub.next(request = 42) // Returns "42"

// A new response can be enqueued at any time
mutableStub.enqueue("new")
// The default handler can also change at any time
mutableStub.defaultHandler = { (it + 1).toString() }
mutableStub.next(request = 42) // Returns "new"
mutableStub.next(request = 42) // Returns "43"
```

### enqueue

Artifact: [androidx.health.connect:connect-testing](https://developer.android.com/jetpack/androidx/releases/health-connect) [View Source](https://cs.android.com/search?q=file:androidx/health/connect/client/testing/stubs/MutableStub.kt+function:enqueue) Added in [1.0.0-alpha04](https://developer.android.com/jetpack/androidx/releases/health-connect#1.0.0-alpha04)

```
public static final void <R extends Object> enqueue(
    @NonNull MutableStub<@NonNull ?, @NonNull R> receiver,
    @NonNull R... values
)
```

Adds a new item to the `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub`'s queue.

```kotlin
import androidx.health.connect.client.testing.stubs.MutableStub
import androidx.health.connect.client.testing.stubs.buildStub
import androidx.health.connect.client.testing.stubs.enqueue

val builderMutableStub =
    buildStub<Int, String> {
        enqueue("first")
        defaultHandler = { "Default" }
    }
builderMutableStub.next(request = 0) // Returns "first"
builderMutableStub.next(request = 0) // Returns "Default"
```

```kotlin
import androidx.health.connect.client.testing.stubs.MutableStub
import androidx.health.connect.client.testing.stubs.enqueue

val mutableStub = MutableStub<Int, String>(defaultHandler = { it.toString() })
mutableStub.enqueue("zero")
mutableStub += "one" // += is equivalent to enqueue()
mutableStub.next(request = 42) // Returns "zero"
mutableStub.next(request = 42) // Returns "one"
mutableStub.next(request = 42) // Returns "42"

// A new response can be enqueued at any time
mutableStub.enqueue("new")
// The default handler can also change at any time
mutableStub.defaultHandler = { (it + 1).toString() }
mutableStub.next(request = 42) // Returns "new"
mutableStub.next(request = 42) // Returns "43"
```

### plusAssign

Artifact: [androidx.health.connect:connect-testing](https://developer.android.com/jetpack/androidx/releases/health-connect) [View Source](https://cs.android.com/search?q=file:androidx/health/connect/client/testing/stubs/MutableStub.kt+function:plusAssign) Added in [1.0.0-alpha04](https://developer.android.com/jetpack/androidx/releases/health-connect#1.0.0-alpha04)

```
public static final void <R extends Object> plusAssign(
    @NonNull MutableStub<@NonNull ?, @NonNull R> receiver,
    @NonNull R value
)
```

Adds a new item to the `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/MutableStub`'s queue.

```kotlin
import androidx.health.connect.client.testing.stubs.MutableStub
import androidx.health.connect.client.testing.stubs.enqueue

val mutableStub = MutableStub<Int, String>(defaultHandler = { it.toString() })
mutableStub.enqueue("zero")
mutableStub += "one" // += is equivalent to enqueue()
mutableStub.next(request = 42) // Returns "zero"
mutableStub.next(request = 42) // Returns "one"
mutableStub.next(request = 42) // Returns "42"

// A new response can be enqueued at any time
mutableStub.enqueue("new")
// The default handler can also change at any time
mutableStub.defaultHandler = { (it + 1).toString() }
mutableStub.next(request = 42) // Returns "new"
mutableStub.next(request = 42) // Returns "43"
```