私は GAE を実行する JS ベースのプロジェクトに取り組んでおり、コードの一部は Facebook、Twitter、または Google から OAuth を使用してユーザーのアバターを取得します。これをテストするために Mocha でテストを作成しようとしていますが、いくつかの問題が発生しています。
フロントエンドでテストするとコードは機能します。私が想定した動作方法は、ZombieJS を使用して GAE でアプリを実行しdev_appserver.py
、OAuth 関数を起動し、適切な認証情報を入力してから、返してテストを完了することです。画像の URL。
ただし、最初のハードルは、NodeJS のサーバーが GAE のサーバーを同じ IP アドレスで実行することを許可していないように見えることです。例えば:
exec 'dev_appserver.py .', ->
console.log arguments
これにより、「アドレスは既に使用されています」というエラーが返されます。別のマシンで実行する以外に、どうすればこれを回避できますか? IP全体とポートだけを予約しないようにNodeJSに指示することは可能ですか? GAE を実行して8080
いますが、NodeJS によって呼び出されない場合は正常に動作します。
2 つ目の問題は ZombieJS です。新しいウィンドウが開いたとき、そして基本的にはブラウザのコンソールを聞く方法を見つけようとしています。tail
Google グループで 2 つのディスカッションを開始しましたが、まだ誰も応答していません (https://groups.google.com/forum/?hl=en#!topic/zombie-js/cJklyMbwxRE およびhttps://groups.google .com/forum/?hl=ja#!topic/zombie-js/tOhk_lZv5eA )
後者は私がそれを回避する方法を見つけることができるほど重要ではありませんが (願っています)、前者が主な問題であるため、このアドレスの競合を解決する方法についての指示をいただければ幸いです。
これが私の NodeJS スクリプトです。
exec = ( require 'child_process' ).exec
fs = require 'fs'
should = require 'should'
yaml = require 'yaml'
Zombie = require 'zombie'
common = require '../../static/assets/js/common'
url = 'ahmeds.local'
browser = new Zombie()
config = null
consoleCb = 'function consoleSuccess(){console.log("success",arguments)}function consoleFailure(){console.log("failure",arguments)}'
browser.debug = true
browser.silent = false
fs.readFile '../../config.yaml', (error, data) ->
config = yaml.eval data.toString 'ascii'
exec 'cd ../../ && dev_appserver.py -a ' + url + ' .', ->
console.log arguments
# browser.visit config.local.url, ->
browser.visit 'http://' + url + ':8080', ->
browser.evaluate consoleCb
browser.evaluate 'profileImage("facebook",consoleSuccess,consoleFailure)'
console.log browser.window.console.output