Spek 中记忆了什么?

What is memoized in Spek?

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

记忆到底是什么?

Memoization 正在记住(缓存)具有一组给定参数值的函数调用的结果,以便如果使用相同的参数值再次调用同一个函数,将返回缓存的结果,而不必重新调用-运行 函数。这是一种优化技术。

在此处查看更多信息:https://en.wikipedia.org/wiki/Memoization

所以在上面的例子中,Spek 将构建 Calculator 的调用包装在它的 memoized 函数中,这意味着它只会构建一次,然后调用 calculator 将重新使用该现有实例。就您在测试中通常如何使用它而言,这会给您带来与在 beforeEachTest 中构造新的 Calculator 相同的行为,但方式更简洁。