its
Extracts a feature out of the current subject of this
expectation with the help of the given extractor, creates a new Expect for it and returns it so that subsequent calls are based on the feature.
Return
The newly created Expect for the extracted feature.
Since
0.16.0
Samples
val person = Person(name = "John Smith", age = 25)
expect(person)
.its { age } // subject is now Int
.toBeLessThan(30)
.toBeGreaterThan(20)
fails {
expect(person)
.its { age } // subject is now Int
.toBeLessThan(20) // fails
.toBeGreaterThan(30) // not evaluated/reported because `toBeLessThan` already fails
// use `.its { ... }` if you want that all assertions are evaluated
}
fun <T, R> Expect<T>.its(extractor: T.() -> R, assertionCreator: Expect<R>.() -> Unit): Expect<T>(source)
Extracts a feature out of the current subject of this
expectation with the help of the given extractor, creates a new Expect for it, applies an expectation-group based on the given assertionCreator for the feature and returns the initial Expect with the current subject.
Return
an Expect for the subject of this
expectation.
Since
0.16.0
Samples
val person = Person(name = "John Smith", age = 25)
expect(person)
.its({ age }) { // subject within this expectation-group is of type Int
toBeGreaterThan(18)
toBeLessThan(35)
} // subject here is back to type Person
fails {
expect(person)
.its({ age }) {
// introduces an expectation-group block
// all expectations are evaluated inside an expectation-group block; for more details:
// https://github.com/robstoll/atrium#define-single-expectations-or-expectation-groups
toBeGreaterThan(40) // fails
toBeLessThan(50) // still evaluated, use `.its.` if you want fail fast behaviour
}
}