Typescript 如何创建GoogleAppsScript.Document.Text的实例

Typescript 如何创建GoogleAppsScript.Document.Text的实例,typescript,google-apps-script,mocking,google-docs,clasp,Typescript,Google Apps Script,Mocking,Google Docs,Clasp,我想对这段代码进行单元测试,它是使用Clasp将Typescript传输到Google应用程序脚本中的: function onLinksInText(text: GoogleAppsScript.Document.Text, onLink: OnLinkCallback) { const iterator = new TextIterator(text, onLink) const characters = text.getText(); for (let i = 0;

我想对这段代码进行单元测试,它是使用Clasp将Typescript传输到Google应用程序脚本中的:

function onLinksInText(text: GoogleAppsScript.Document.Text, onLink: OnLinkCallback) {
    const iterator = new TextIterator(text, onLink)
    const characters = text.getText();
    for (let i = 0; i < characters.length; i++) {
        iterator.handle(i, text.getLinkUrl(i));
    }
    iterator.end()
}
函数onLinksInText(文本:GoogleAppsScript.Document.text,onLink:OnLinkCallback){
常量迭代器=新文本迭代器(文本,联机)
常量字符=text.getText();
for(设i=0;i
为此,我需要创建一个
GoogleAppsScript.Document.Text


我该怎么做?

简短回答

你得模仿这个班

长答案

要成功地测试函数,您只需要构造函数和模拟的方法。让我们也好好嘲笑一下:

函数TextFactory(){
const linkMatcher=/https?:\/\/(?:www\)?(?:\.{0,1}(?:\w |-)+)+/ig;
让私人“”;
返回{
setText(文本){
private=text.toString();
归还这个;
},
getText(){
回归私人;
},
getLinkUrl(偏移量){
const idx=private.search(linkMatcher);
如果(idx<0 | | offset>idx){returnnull;}
返回private.slice(idx);
}
};
}
const mock=TextFactory();
mock.setText(“在https://example.com ");
log(mock.getText());
log(mock.getLinkUrl(4));
console.log(mock.getLinkUrl(12))