relishapp docs提到 let
的值缓存在同一个示例中:
使用let定义memoized辅助方法 . 该值将在同一示例中的多个调用之间缓存,但不跨示例缓存 .
它并不意味着最重要的 describe
或 context
块 . 那是对的吗?如果是这样,您是否可以链接到明确声明的文档?
在其他地方,文档注意到以下内容:
describe方法创建一个示例组 . 在传递给描述的块中,您可以使用describe或context方法声明嵌套组,或者您可以使用它声明示例或指定方法 .
"example"是 context/describe
块,还是 it
块?简而言之, let
值的范围究竟是什么: it
,或 context/describe
?
2 回答
例如,它表示您的specs树中的
leaf
看看这个组成的规格:
x
将为每个specify
块计算一次且仅计算一次 . 如果你在里面多次使用它(比如在例子中的第二个specify
. 第二种用法只是检索memoized值(1+2+3
将不再计算) .但是对于每个
specify
,将计算该值(除非它未被使用,因为let
也被懒惰地评估)您还会询问
let
的范围,这是不同的:范围(在此定义元素可用的范围内)是您定义它的块 . 它会向下冒泡到其中的每个it/specify
块 .一个例子是它的块,你可以通过看到它之间阻止let值没有被缓存和重新填充来相当容易地看到它 .
您引用的第二段描述为创建示例的“组” .