2017-11-02 7 views
0

私はGoにJavaScriptテストスイートを書こうとしています。Google GoとChromeをインターフェースする方法

Goで単体テストを作成し、ブラウザに読み込まれたWebアプリケーションに対して実行することを想定しています。

私はtest JavaScriptオブジェクトをこの目的のためにグローバル名前空間に入れました。だから、私はテストしたいさまざまなコンポーネントに "フック"を持っています。

このスクリプトをChromeで読み込み、testにインターフェイスを公開して、Goからブラウザ内のJavaScript関数にアクセスできるようにすることはできますか?

例:

// JavaScript関数上記の

// Intentionally, and cautiously, emplace "test" into the global namespace 
// In practice I would make this a singleton :^D 
test = (typeof test == "undefined") ? {} : test; 

// Employ the method invocation pattern to append "test" with function "cheesePrice()" 
// ES6 fat arrow function 
test.cheesePrice = (type) => { 
    let p = 0; 
    switch (type) { 
     case "cheddar" : { p = 9.99; break; }; 
     case "swiss" : { p = 6.49; break; }; 
     case "gouda" : { p = 7.49; break; }; 
     default : { // throw; } 
    } 
    return p; 
} 

// Example call 
test.cheesePrice("swiss"); //-> 6.49 

、どのように私は囲碁スクリプト内で、test.cheesePrice()を呼び出し、戻り値を受け取ることができますか?このようなもの(疑似コード);

// Imagine here browserHook is an interface into Chrome 
// Enabling us to invoke the method above 
func getJsCheesePrice(cheeseType string) float32 { 
    return browserHook.test.getPrice(cheeseType); 
} 
func main() { 
    assert.Equal(getJsCheesePrice("cheddar"), 9.99); 
} 

答えて

0

私の理解から、コンパイルされたGoプログラム内のjavascript関数とのインタフェース方法はありません。しかし、これはありますが、これは必ずしも直接javascript関数を呼び出すことはできませんが、JSを実行しているブラウザへのインターフェイスを与えることに注意してください。

関連する問題