boardtest

package
v0.33.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 11, 2026 License: MIT Imports: 6 Imported by: 0

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

func Run

func Run(t *testing.T, factory Factory)

Run 跑整套契约判据。factory 每个子测试调用一次(各条例句独立)。

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 的假时钟。

func (*FakeClock) Advance added in v0.33.0

func (c *FakeClock) Advance(d time.Duration)

Advance 把假时钟前进 d。

func (*FakeClock) Now added in v0.33.0

func (c *FakeClock) Now() time.Time

Now 返回当前假时刻。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL