Documentation
¶
Overview ¶
Package boardtest @@Board@@ 的**共享契约测试套件**。
宿主写完存储实现后跑一遍:违反哪条契约就红在哪一条,免得「各判一套、 漂移到没人发现为止」(与 @sidetest@ 同一范式)。
硬失败不静默跳过 ¶
显式接入套件 = 声明要满足契约。跳过等于把「没测过」伪装成「通过了」。
时钟 ¶
「租约过期可被接管」这条契约需要可控时钟,否则只能靠 sleep(慢且 flaky)。 套件提供 FakeClock;实现须通过 ClockedBoard 接口暴露「用哪个时钟」, 且**过期判定必须读这个时钟**(不是 time.Now)—— 否则套件的过期场景测的是真实时间,恒不触发,套件就成了一组空断言。 (与 @sidetest@ 的 ClockedStore 同一范式。)
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ClockedBoard ¶ added in v0.33.0
type ClockedBoard interface {
taskboard.Board
// UseClock 指定存储实现读时钟的方式(通常是注入一个 func() time.Time)。
UseClock(now func() time.Time)
}
ClockedBoard 实现须提供的能力:把时钟注入到存储实现里。
**为什么单独一个接口**:过期判定是存储实现内部的事(它自己知道 「租约还在不在」)。套件不能替它判,只能要求它**用可注入的时钟**。 没实现这个接口 → 套件硬失败(而不是跳过过期场景——跳过等于假绿)。
type Factory ¶ added in v0.33.0
type Factory func(t *testing.T, clock *FakeClock) ClockedBoard
Factory 构造被测存储实现。
factory 每个子测试调用一次,构造一份全新实现,并把套件的假时钟注入它。
type FakeClock ¶ added in v0.33.0
type FakeClock struct {
// contains filtered or unexported fields
}
FakeClock 套件提供的假时钟(并发安全;测试内手动推进)。
func NewFakeClock ¶ added in v0.33.0
func NewFakeClock() *FakeClock
NewFakeClock 创建起点为 2026-01-01T00:00:00Z 的假时钟。
Click to show internal directories.
Click to hide internal directories.