Faking concrete classes
| Only concrete trees (concrete classes containing concrete classes) can be faked! |
Data classes are ideal candidates for faking.
Requesting generation
You can declare that a class needs a specific faked data by using the @UsesFakes annotation.
@UsesFakes(User::class)
class MyTests
Once a type appears in @UsesFakes, the processor will generate a fake function for it.
Instantiating
Once a class has been faked, you can get a new instance by calling its fake* corresponding function:
@UsesFakes(User::class)
class MyTests {
val user = fakeUser()
}
Here are the rules the processor uses to generate fakes:
-
Nullable values are always
null. -
Booleanvalues are set tofalse. -
Numeric values are set to
0. -
Stringvalues are set to empty"". -
Other non-nullable non-primitive values are faked.
|
By using a
|
Providing fake instances
Classes that do not have a public constructor cannot be automatically faked.
For these types, you need to provide your custom fake provider with @FakeProvider:
@FakeProvider
fun provideFakeInstant() = Instant.fromEpochSeconds(0)
| There can be only one provider per type, and it needs to be a top-level function. |