我正在研究Trello Power Up。他们的工作方式是加载您提供的iFrame,其中包含一些包含自定义代码的script
代码。您可以看到一个有效的示例here。结果是,当您的代码运行时,存在某些与您交互的“全局”(甚至不确定这是否是正确的单词)对象。例如:
const Promise = TrelloPowerUp.Promise;
TrelloPowerUp.initialize({
'card-buttons': (t, options) => {
return [{
text: 'Awesome Button',
}];
}, 'show-settings': (t, options) =>{
return t.popup({
title: 'Settings',
url: './settings.html',
height: 184 // we can always resize later, but if we know the size in advance, its good to tell Trello
});
}
});
我开始为这个项目添加一些复杂性,我的习惯是使用tdd / write单元测试。我无法弄清楚这段代码是如何可测试的。
在运行mocha测试之前,有没有办法提供模拟'TrelloPowerUp'全局对象?我试过了:
TrelloPowerUp = {}
require('./client.js');
(client.js脚本在导入后立即运行...)毫不奇怪,这不起作用。
我想我可以从另一个有单元测试的文件中导入,以最小化不可测试的代码,例如:
从'./TrelloInitActions'
导入TrelloInitActionsconst Promise = TrelloPowerUp.Promise;
TrelloPowerUp.initialize({
'card-buttons': TrelloInitActions.initButtons
}, 'show-settings': TrelloInitActions.showSettings
});
提前感谢您的帮助!
答案 0 :(得分:0)
要解决这个问题,我正在使用反应,如果你发现自己处于这种情况,请查看https://www.npmjs.com/package/trello-react-scripts