Что запомнилось в Спеке? - PullRequest
1 голос
/ 31 января 2020

Spek ссылки на документацию

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() }

Что именно запоминается?

1 Ответ

2 голосов
/ 01 февраля 2020

Memoization запоминает (кэширует) результат вызова функции с заданным набором значений параметров, так что если эта же функция вызывается снова с теми же значениями параметров, кешированный результат будет возвращен, вместо того, чтобы повторно запускать функция. Это метод оптимизации.

См. Дополнительную информацию здесь: https://en.wikipedia.org/wiki/Memoization

Так что в приведенном выше примере Spek упаковывает вызов для создания Calculator в его memoized функция, означающая, что она будет создавать ее только один раз, и после этого вызовы calculator будут повторно использовать этот существующий экземпляр. И с точки зрения того, как вы обычно будете использовать его в тесте, это даст вам то же поведение, что и при создании нового Calculator в beforeEachTest, но более кратким образом.

...