我正在开发一个基于 JS 的项目,该项目在 GAE 上运行,部分代码使用 Facebook、Twitter 或 Google 的 OAuth 获取用户的头像。我正在尝试在 Mocha 中编写测试以对此进行测试,但我遇到了一些问题。
当我在前端测试代码时,代码可以工作,我设想它的工作方式是使用 ZombieJS 在 GAE 上运行应用程序dev_appserver.py
,触发 OAuth 函数,填写适当的身份验证内容,然后通过返回完成测试图片网址。
然而,我遇到的第一个障碍是NodeJS 的服务器似乎不允许 GAE 的服务器在相同的 IP 地址上运行。例如:
exec 'dev_appserver.py .', ->
console.log arguments
这将返回错误“地址已在使用中”。除了在不同的机器上运行它之外,我怎样才能解决这个问题?是否可以告诉 NodeJS 不保留整个 IP 而只保留一个端口?我正在运行 GAE,8080
当它不被 NodeJS 调用时它工作正常。
第二个问题是 ZombieJS。我试图找出一种可以在打开新窗口时收听的方法,本质tail
上是浏览器的控制台。我已经在 Google 群组上发起了两次讨论,但尚未有人回复(https://groups.google.com/forum/?hl=en#!topic/zombie-js/cJklyMbwxRE 和https://groups.google .com/forum/?hl=en#!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