2016-05-20 4 views
2

私はElectronを使ってアプリケーションを構築しようとしています。exeファイルのないスペクトロンと電子

私は、電子envと電子パッケージを使用して、いくつかの単位テストを行う必要があります。

このように、私はスペクトロンを使ってアプリケーションをシミュレートしています。

ドキュメントでは、 '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(); 
      }); 
     }); 

誰もが私は私のテストのenv仕事をするには、このパスに置くべきかを知っていますか?

PS:mocha chaiとsin​​onを使用しています。まずあなたの助け

+0

'... app.start返す;' 'beforeEach'インチ – Amit

+0

問題を解決しましたか?私はEmberの電子とスペクトロと同様のことを持っています – lft93ryt

答えて

8

ため

おかげで、私はテストの目的のために実行可能ファイルを作成していたが、それは実際には必要ありません。

Spectronにはexample testglobal 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にあります。上記は私のために働く。

+0

こんにちは、私は何とかそれが働いていない何かを試していますあなたはこれを確認してくださいできますか?https://discuss.atom.io/t/spectron-not-triggering-app/48123 –

+0

は既にこれを修正したようです。 @JeyaKumar – ericat

+0

電子スラックからの何人かが私にその問題を解決するのを助けました。 –

1

docに述べたようにあなたは電子事前構築を使用する場合にも、変数のパスに「電子」を提供することができます

パス - 必須。 が実行可能な電子アプリケーションへの文字列パス。注:あなたのアプリケーションの メインスクリプトで直接電子を呼び出す場合は、 electron-prebuilt経由で電子パスを指定し、アプリケーションのメインスクリプトパスを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() 
    }) 
... 
} 
関連する問題