2016-05-20 2 views
2

Ich versuche, eine Anwendung mit Electron zu bauen.Spectron und Elektron ohne EXE-Dateien

Ich muss einen Einheitentest basierend auf dem Elektron env und mit Elektronenpaketen machen.

Auf diese Weise verwende ich Spektron, um meine Anwendung zu simulieren.

Auf der Dokumentation, es ist geschrieben, dass ich in 'Pfad' Eigenschaft den Pfad, wo meine ausführbare Datei ist. Ich habe keine ausführbare Datei für jetzt, ich bin im Entwicklungsmodus.

Hier ist, was ich basierend auf einer anderen Frage versucht haben:

erscheint
beforeEach(() => { 
    app = new Application({ 
     path: 'node_modules/.bin/electron' 
    }); 
    app.start().then(res => console.log(res), err => console.log(err)); 

}); 

Nichts auf der Eingabeaufforderung und der folgende Test sagt Fehler, dass ich nicht getWindowCount auf einem undefinierten Objekt bekommen kann (klar, die App wird nicht instanziiert):

Weiß jemand, was ich in diesen Pfad setzen sollte, um meinen Test env arbeiten zu lassen?

PS: Ich benutze Mocha Chai und Sinon.

Danke für Ihre Hilfe

+0

'Rückkehr app.start ...;' in 'beforeEach'. – Amit

+0

Haben Sie Ihr Problem gelöst? Ich habe eine ähnliche Sache mit Ember-Elektron und Spektron – lft93ryt

Antwort

8

zunächst eine ausführbare Datei zum Zweck der Prüfung zu schaffen, war ich aber das ist eigentlich nicht notwendig.

Sie können sehen, dass Spectron eine example test und eine global setup hat.

Das Beispiel übergibt eine Option namens args, und das ist genau das, was Sie vermissen. Das ist, was ich tue:

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; 
    }); 
}); 

Mein Test in ./tests/app-test.js sitzt. Das oben genannte funktioniert für mich.

+0

Hallo, ich versuche das gleiche, irgendwie funktioniert es nicht, bitte überprüfen Sie dies https://discuss.atom.io/t/spectron-not-triggering-app/48123 –

+0

sieht aus wie du das schon behoben hast! @JeyaKumar – ericat

+0

Jemand aus der Elektronik hilft mir, dieses Problem zu beheben. Vielen Dank für einen Blick –

1

können Sie liefern auch „Elektron“ auf dem Variablen Weg, wenn Sie elektronen prebuilt verwenden, wie in den doc erwähnt:

Weg - Erforderlich. String-Pfad zu der Electron-Anwendung ausführbar auf Start. Hinweis: Wenn Sie ein Elektron direkt mit dem Hauptskript Ihrer App aufrufen möchten, dann sollten Sie den Pfad als Elektron über Elektron-Prebuilt angeben und den Haupt-Skriptpfad Ihrer App als erstes -Argument im Array args angeben.

Ich denke, es sieht wie folgt aus:

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() 
    }) 
... 
}