# ViewModelScenarioKt

Added in 2.9.0

*** ** * ** ***


```
public final class ViewModelScenarioKt
```

<br />

*** ** * ** ***

## Summary

| ### Public methods |
|---|---|
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/ViewModelScenario<@https://developer.android.com/reference/androidx/annotation/NonNull VM>` | `<VM extends https://developer.android.com/reference/androidx/lifecycle/ViewModel> https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/ViewModelScenarioKt#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/viewmodel/CreationExtras creationExtras, @https://developer.android.com/reference/androidx/annotation/NonNull Function1<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/viewmodel/CreationExtras, @https://developer.android.com/reference/androidx/annotation/NonNull VM> initializer )` Creates a `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/ViewModelScenario` using a given `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1)` class as key, an `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1)` as a `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory` and a `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1)` as default extras. |
| `static final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/ViewModelScenario<@https://developer.android.com/reference/androidx/annotation/NonNull VM>` | `<VM extends https://developer.android.com/reference/androidx/lifecycle/ViewModel> https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/ViewModelScenarioKt#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory factory, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/viewmodel/CreationExtras creationExtras )` Creates a `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/ViewModelScenario` using a given `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)` class as key, an `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)` and a `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)` as default extras. |

## Public methods

### viewModelScenario

Artifact: [androidx.lifecycle:lifecycle-viewmodel-testing](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/viewmodel/testing/ViewModelScenario.kt+function:viewModelScenario)

```
public static final @NonNull ViewModelScenario<@NonNull VM> <VM extends ViewModel> viewModelScenario(
    @NonNull CreationExtras creationExtras,
    @NonNull Function1<@NonNull CreationExtras, @NonNull VM> initializer
)
```

Creates a `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/ViewModelScenario` using a given `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1)` class as key, an `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1)` as a `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory` and a `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.viewmodel.CreationExtras,kotlin.Function1)` as default extras.

You should access the `https://developer.android.com/reference/androidx/lifecycle/ViewModel` instance using `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/ViewModelScenario#viewModel()`, and clear the `https://developer.android.com/reference/androidx/lifecycle/ViewModelStore` using `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/ViewModelScenario#close()`.

Example usage:

```
viewModelScenario { MyViewModel(parameters) }
  .use { scenario ->
    val vm = scenario.viewModel
    // Use the ViewModel
  }
```

| Parameters |
|---|---|
| `<VM extends https://developer.android.com/reference/androidx/lifecycle/ViewModel>` | The reified `https://developer.android.com/reference/androidx/lifecycle/ViewModel` class to be created. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/viewmodel/CreationExtras creationExtras` | Additional data passed to the `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory` during a `https://developer.android.com/reference/androidx/lifecycle/ViewModel` creation. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull Function1<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/viewmodel/CreationExtras, @https://developer.android.com/reference/androidx/annotation/NonNull VM> initializer` | A `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory` function to create a `https://developer.android.com/reference/androidx/lifecycle/ViewModel`. |

### viewModelScenario

Artifact: [androidx.lifecycle:lifecycle-viewmodel-testing](https://developer.android.com/jetpack/androidx/releases/lifecycle) [View Source](https://cs.android.com/search?q=file:androidx/lifecycle/viewmodel/testing/ViewModelScenario.kt+function:viewModelScenario)

```
public static final @NonNull ViewModelScenario<@NonNull VM> <VM extends ViewModel> viewModelScenario(
    @NonNull ViewModelProvider.Factory factory,
    @NonNull CreationExtras creationExtras
)
```

Creates a `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/ViewModelScenario` using a given `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)` class as key, an `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)` and a `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/package-summary#viewModelScenario(androidx.lifecycle.ViewModelProvider.Factory,androidx.lifecycle.viewmodel.CreationExtras)` as default extras.

You should access the `https://developer.android.com/reference/androidx/lifecycle/ViewModel` instance using `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/ViewModelScenario#viewModel()`, and clear the `https://developer.android.com/reference/androidx/lifecycle/ViewModelStore` using `https://developer.android.com/reference/androidx/lifecycle/viewmodel/testing/ViewModelScenario#close()`.

Example usage:

```
val myFactory: ViewModelProvider.Factory = MyViewModelFactory()
viewModelScenario<MyViewModel>(myFactory)
  .use { scenario ->
    val vm = scenario.viewModel
    // Use the ViewModel
  }
```

| Parameters |
|---|---|
| `<VM extends https://developer.android.com/reference/androidx/lifecycle/ViewModel>` | The reified `https://developer.android.com/reference/androidx/lifecycle/ViewModel` class to be created. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory factory` | A `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory` to create a `https://developer.android.com/reference/androidx/lifecycle/ViewModel`. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/lifecycle/viewmodel/CreationExtras creationExtras` | Additional data passed to the `https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider.Factory` during a `https://developer.android.com/reference/androidx/lifecycle/ViewModel` creation. |