Skip to content

Default Value Strategy

Controls whether data class constructor parameters with default values should use their Kotlin default or be replaced with a generated fixture value.

The default is DefaultValueStrategy.UseDefault, which preserves Kotlin default values.

Variants

UseDefault

Uses the Kotlin default constructor value for optional parameters.

data class User(val role: String = "guest")

val user = some<User> {
    strategy(DefaultValueStrategy.UseDefault)
}

user.role // "guest"

This is the default strategy.

Generate

Generates a value for optional parameters through the resolver chain, ignoring the Kotlin default value.

data class User(val role: String = "guest")

val user = some<User> {
    strategy(DefaultValueStrategy.Generate)
}

user.role // "a-random-string"

Use this strategy when you need fully populated objects even for classes that declare defaults.

Custom Property Factories

Custom property factories always take precedence over the default value strategy.

data class User(val role: String = "guest")

val user = some<User> {
    strategy(DefaultValueStrategy.Generate)
    property(User::role) { "admin" }
}

user.role // "admin"

Summary table

Strategy Behavior
UseDefault Uses Kotlin default values for optional parameters (default)
Generate Generates fixture values for optional parameters