import { App } from 'koishi-test-utils'
const mockedApp = new App()
测试工具 (Test Utils)
TIP
本页显示的版本号都表示对应的 koishi-test-utils 版本号(而不是对应的 koishi 版本号)。
koishi-test-utils 包含了被 Koishi 使用的测试工具。
testDatabase(app: App)
测试全部内置数据库方法。
类:MockedApp
App 的子类,封装了一系列用于测试的方法。除了 MockedApp 这个名字外,你还可以直接从 koishi-test-utils 中引入 App:
new MockedApp(options?)
- options.mockStart:
boolean
使构造的应用处于已连接状态 - options.mockDatabase:
boolean
给构造的应用配置一个 MemoryDatabase - 返回值:
MockedApp
这里的 options
除了支持 App 类的所有构造选项外,还支持下列选项:
app.receive(meta)
- meta:
Partial<Session>
事件所需的 Session 属性 - 返回值:
string
触发会话事件。
app.session(userId, channelId?)
- userId:
string
用户 ID - channelId:
string
频道 ID - 返回值:
TestSession
创建一个测试会话。
类:TestSession
测试会话是对发往同一上下文的多次消息的一个抽象。它使用 app.session()
方法创建,并借助 app.receive()
实现其功能。
WARNING
这个类下的大部分方法的返回都基于 session.send 方法和 after-middleware 事件。在提供了极大方便的同时,会话也存在一些限制。如果你的插件存在以下几种特殊情况之一:
- 使用了异步的 message 事件监听器
- 中间件和指令中可能存在未阻塞的异步操作
- 直接调用 Bot API 而非 meta.send
这个类的方法可能会返回预料之外的结果。当然,如果要测试这些特殊情况,koishi-test-utils 也是提供了其他方法的。
session.receive(content, count?)
- content:
string
要发送的信息 - count:
number
等待的回复数量 - 返回值:
Promise<string[]>
收到的回复列表
模拟发送一条消息。
session.shouldReply(content, reply?)
- content:
string
要发送给机器人的信息 - reply:
string | RegExp | readonly (string | RegExp)[]
应有的回复,如果略去则不会进行比较 - 返回值:
Promise<void>
断言某条信息应存在某些回复。
session.shouldNotReply(content)
- content:
string
要发送给机器人的信息 - 返回值:
Promise<void>
断言某条信息不应存在任何回复。