投手客户
如何运作
pitcher-client 被曝光为类 PitcherClient 它负责保持与单一的VM的连接,暴露一个必须的API发送请求,收听通知等,并且还保持内部状态以进行更简单的消费.
有三个级别 PitcherClient。主类在瞬间 CONNECTED 状态,并将仅移动到 CONNECTING, (中文(简体) ), DISCONNECTED 财务报告和审定财务报表 CONNECTED 根据过去的状况 connection编辑 Connection 类为初始 VM 请求和websocket 连接持有连接状态,而 WebsocketClient 持有websocket连接的连接状态.
所有信件均由 PitcherClientMessageHandler 财务报告和审定财务报表 PitcherMssageHandler (也许应该是一个单一类别),其中处理信息的序列化、去序列化、排队和匹配.
如何写测试
所有测试 pitcher-client 可以写成完整的整合测试,其中唯一的嘲弄是皮彻的答复.
describe("Something", () => {
test("should do something", async () => {
const { client, pitcher, dispose } = await initPitcherClientMock({
// This object represents all the responses you want Pitcher to give,
// typed and ready to roll
"file/open": ({ params: { id } }) => ({
method: "file/open",
status: PitcherResponseStatus.RESOLVED,
result: {
clients: {},
content: "",
document: { clients: {}, revision: 0 },
id,
isBinary: false,
savedHash: "cc",
},
}),
});
// Use pitcher client as normal
client.fs.getFile("someId");
// Send a notification form Pitcher to the client
await pitcher.sendNotification({
method: "file/documentOperation",
params: {
id: file.id,
revision: 1,
operation: incoming.toJSON(),
reason: ot.OperationReason.USER,
},
});
// Not strictly required, but nice to clean up tests
dispose();
});
});
记着! 若为 pitcher-client 向您发送一个请求, 您没有处理器, 它会丢出一个错误, 并告诉你缺少哪个处理器 .
怎么会这样?
- 这个
initPitcherClientMock返回时initPitcherClient以嘲弄的方式向它请求 - 这个
jest-websocket-mock库用于为每次使用设置被模拟的 WebSocket 服务器initPitcherClientMock