我正在尝试使用Electron构建应用程序。
我需要根据电子环境和电子封装进行一些单元测试。
这样,我使用spectron来模拟我的应用程序。
在文档中,我写道我必须在'path'属性中放入我的可执行文件所在的路径。我现在没有可执行文件,我处于开发模式。
以下是我根据另一个问题尝试的内容:
beforeEach(() => {
app = new Application({
path: 'node_modules/.bin/electron'
});
app.start().then(res => console.log(res), err => console.log(err));
});
提示中没有显示任何内容,并且以下测试失败告诉我无法在未定义的对象上获取getWindowCount(显然,应用程序未实例化):
it('should call currentWindow', (done) => {
app.client.getWindowCount().then((count) => {
expect(count).to.equals(1);
done();
});
});
有人知道我应该在这条道路上放置什么来让我的测试环境有效吗?
PS:我正在使用摩卡柴和sinon。感谢您的帮助
答案 0 :(得分:9)
起初我是为了测试而创建一个可执行文件,但实际上并不是必需的。
您可以看到Spectron有一个example test和一个global setup。
该示例传递了一个名为args的选项,这正是您所缺少的。这就是我在做的事情:
var appPath = path.resolve(__dirname, '../'); //require the whole thing
var electronPath = path.resolve(__dirname, '../node_modules/.bin/electron');
beforeEach(function() {
myApp = new Application({
path: electronPath,
args: [appPath], // pass args along with path
});
return myApp.start().then(function() {
assert.equal(myApp.isRunning(), true);
chaiAsPromised.transferPromiseness = myApp.transferPromiseness;
return myApp;
});
});
我的测试位于./tests/app-test.js。以上对我有用。
答案 1 :(得分:2)
您还可以提供电子"如果您使用doc中提到的电子预建:
,请转到变量路径路径 - 必填。可执行的Electron应用程序的字符串路径 发射。注意:如果您想直接使用应用程序调用电子邮件 主脚本然后你应该指定路径为电子通过 电子预建,并指定您的应用程序的主要脚本路径作为第一个 args数组中的参数。
我认为它看起来像这样:
import electron from 'electron'
import { Application } from 'spectron'
describe('application launch', function () {
this.timeout(10000)
beforeEach(function () {
this.app = new Application({
path: electron,
args: ['app']
})
return this.app.start()
})
...
}