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> 
断言某条信息不应存在任何回复。