# Stubs

Added in 1.0.0-alpha04

*** ** * ** ***


```
public final class Stubs
```

<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/Stub<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/Stubs#stub(kotlin.Any)(R default)` Creates a stub that always returns a default value. |
| `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/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/Stubs#stub(kotlin.collections.Iterable,kotlin.Function0)( @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> queue, @https://developer.android.com/reference/androidx/annotation/NonNull Function0<R> defaultHandler )` Creates a stub that returns elements from a queue or produces it using the default handler. |

## Public methods

### stub

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/Stub.kt+function:stub) Added in [1.0.0-alpha04](https://developer.android.com/jetpack/androidx/releases/health-connect#1.0.0-alpha04)

```
public static final @NonNull Stub<Object, @NonNull R> <R extends Object> stub(R default)
```

Creates a stub that always returns a default value.

Example Stub where the output is fixed:

```kotlin
import androidx.health.connect.client.testing.stubs.Stub
import androidx.health.connect.client.testing.stubs.stub

val stub: Stub<Int, String> = stub("Fixed response")
stub.next(request = 0) // Returns "Fixed response"
stub.next(request = 1) // Returns "Fixed response"
```

| Parameters |
|---|---|
| `R default` | A response `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/package-summary#stub(kotlin.Any)` that will be used if a response is requested |

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/Stub` |   |

### stub

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/Stub.kt+function:stub)

```
public static final @NonNull Stub<Object, @NonNull R> <R extends Object> stub(
    @NonNull Iterable<@NonNull R> queue,
    @NonNull Function0<R> defaultHandler
)
```

Creates a stub that returns elements from a queue or produces it using the default handler.

Example Stub where the output is fixed:

```kotlin
import androidx.health.connect.client.testing.stubs.Stub
import androidx.health.connect.client.testing.stubs.stub

val stub: Stub<Int, String> = stub("Fixed response")
stub.next(request = 0) // Returns "Fixed response"
stub.next(request = 1) // Returns "Fixed response"
```

Example Stub with 2 elements in a queue that once consumed returns a fixed response :

```kotlin
import androidx.health.connect.client.testing.stubs.Stub
import androidx.health.connect.client.testing.stubs.stub

val stub: Stub<Int, String> = stub(listOf("zero", "one")) { "Default" }
stub.next(request = 0) // Returns "zero"
stub.next(request = 0) // Returns "one"
stub.next(request = 0) // Returns "Default"
```

Example Stub that throws an exception when used:

```kotlin
import androidx.health.connect.client.testing.stubs.Stub
import androidx.health.connect.client.testing.stubs.stub

val stubWithException: Stub<Int, String> = stub { throw Exception() }
stubWithException.next(request = 0) // Throws exception
stubWithException.next(request = 0) // Throws exception
```

Example Stub with 1 element in a queue that once consumed throws an exception when used:

```kotlin
import androidx.health.connect.client.testing.stubs.Stub
import androidx.health.connect.client.testing.stubs.stub

val stubWithQueueAndException: Stub<Int, String> =
    stub(queue = listOf("first")) { throw Exception() }
stubWithQueueAndException.next(request = 0) // Returns "first"
stubWithQueueAndException.next(request = 0) // Throws exception
```

| Parameters |
|---|---|
| `@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> queue` | a queue of items that has precedence over the default handler \* |
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function0<R> defaultHandler` | Function that produces a response `https://developer.android.com/reference/androidx/health/connect/client/testing/stubs/package-summary#stub(kotlin.collections.Iterable,kotlin.Function0)`. Used when a response is requested and the queue is empty. |