我正在开发基于JS的项目,该项目运行GAE,部分代码使用来自Facebook,Twitter或Google的OAuth获取用户的头像。我试图在摩卡编写测试来测试这个,但我遇到了一些问题。使用Mocha测试OAuth JS的单元
当我在前端测试它时,代码起作用,我设想它的工作方式是使用ZombieJS在GAE的dev_appserver.py
上运行应用程序,触发OAuth函数,填充相应的auth内容,然后通过返回图片网址来完成测试。
但是,我得到的第一个障碍是它出现 NodeJS的服务器不允许GAE的服务器运行在相同的IP地址上。例如:
exec 'dev_appserver.py .', ->
console.log arguments
这将返回错误“地址已在使用中”。除了在另一台机器上运行它,我怎样才能解决这个问题?是否有可能告诉NodeJS不保留整个IP和端口?我在8080
上运行GAE,当它没有被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)
While后者不是重要,因为我可以找到解决方法(我希望),前者是主要问题,所以我非常感谢任何方向如何解决此地址冲突。
这里是我的脚本的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
节点不保留整个地址。我一直在同时运行节点服务器以及一些IIS部署的服务和网站,并且它从不抱怨。但是,我已经手动设置了节点的端口,所以我确信它不会与其他部署冲突。请注意,默认情况下节点检查器在端口8080上运行,如果您有一个同时运行节点服务器和节点检查器的脚本,则会占用端口8080。 – Zee 2013-07-27 01:00:44