2

Spek documentation references

As a best practice you typically want test values to be unique for each test this can be done by using a lateinit variable and assigning it within a beforeEachTest. lateinit var calculator: Calculator

beforeEachTest {
    calculator = Calculator()
}

To make it more concise, Spek provides memoized to do the same thing:


val calculator by memoized { Calculator() }

What exactly is memoized?

sisternight438
  • 153
  • 1
  • 1
  • 12

1 Answers1

4

Memoization is remembering (caching) the result of a function call with a given set of parameter values so that if that same function is called again with the same parameter values, the cached result will be returned rather than having to re-run the function. It's an optimisation technique.

See more info here: https://en.wikipedia.org/wiki/Memoization

So in the example above Spek wraps the call to construct a Calculator in its memoized function, meaning that it will only construct it once, and thereafter calls to calculator will re-use that existing instance. And in terms of how you'd generally use it in a test, that would give you the same behaviour as constructing a new Calculator in beforeEachTest, but in a more concise way.

Yoni Gibbs
  • 6,518
  • 2
  • 24
  • 37