簡體   English   中英

如何在Electron和Spectron之間發送ipcMessages?

[英]How to send ipcMessages between Electron and Spectron?

我正在嘗試使用Spectron框架為Electron實現的app編寫一些測試。 當我的應用程序正常啟動時,我想發送一個已准備就緒的事件。 我做的事情

在app中:我試試這兩個

electron.ipcRenderer.send('app-started');
process.send('app-started', "SUCCESS");

在測試中:我試試這兩個

beforeEach(function () {
    let pathArgs = path.join(__dirname, '../..');

    app = new Application({
        path: APP_PATH_ELECTRON,
        args: [pathArgs],
        env: {
            TESTING: true,
            NODE_ENV: 'development',
            APPDATA: "C:/tmp"
        }
    });

    return app.start()
        .then(function() {
            assert.equal(app.isRunning(), true);
            client = app.client;
            mainWindow = client.browserWindow;
            ipcRenderer = client.electron.ipcRenderer;
        });
});

it('checks that app-started has been fired', function(done) {

   app.mainProcess.on('app-started', () => {console.log("DONE"); done();});

   app.rendererProcess.on('app-started', () => {console.log("DONE"); done();});

});

函數done()永遠不會被調用:(我很欣賞任何可能出錯的想法。

謝謝!

是不是你之前,甚至被解雇it的TestCase?

嘗試一下,看看事件是否正在觸發:

beforeEach(function () {
    let pathArgs = path.join(__dirname, '../..');

    app = new Application({
        path: APP_PATH_ELECTRON,
        args: [pathArgs],
        env: {
            TESTING: true,
            NODE_ENV: 'development',
            APPDATA: "C:/tmp"
        }
    });

    app.mainProcess.on('app-started', () => {console.log("DONE"); done();});
    app.rendererProcess.on('app-started', () => {console.log("DONE"); done();});

    return app.start()
        .then(function() {
            assert.equal(app.isRunning(), true);
            client = app.client;
            mainWindow = client.browserWindow;
            ipcRenderer = client.electron.ipcRenderer;
        });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM