今日初めてZombie.jsを試してみましたが、javascript を介して DOM 要素を設定するページ (具体的には Backbone.js アプリ) にアクセスするのに問題があります。簡単な例として、Backbone.js の Todo アプリにアクセスし、いくつかの項目を手動で追加しました。次に、Zombie を使用して要素内の html を取得しようとしました#todo-list
が、空に戻りました。を設定browser.runScripts = true
したので、Zombie が照会できるようにすべての準備ができているはずではありませんか?
ソースを見ると、内部の HTML は確かに空です。これは Zombie.js でも可能ですか? または、ここで行ったように、ジャスミンのようなものを使用する必要がありますか?
以下にサンプル コードと、得られた応答を示します。
var zombie = require('zombie'),
vows = require('vows'),
assert = require('assert');
var baseUrl = 'http://documentcloud.github.com/backbone/examples/todos/index.html';
vows.describe('Zombie Tests on a Backbone App').addBatch({
'Navigate to Todo List' : {
topic: function () {
browser = new zombie.Browser({ debug: true });
browser.runScripts = true;
browser.on('error',function (err){console.log(err.stack)});
browser.visit(baseUrl, this.callback);
},
'Can see todo list' : function (err,browser,status) {
console.log('todo-list inner:' + browser.querySelector("#todo-list").innerHTML);
// actual tests would go here
}
},
}).export(module);
そして実行からの出力vows
:
> vows test/todo-test.js --spec
♢ Zombie Tests on a Backbone App
Zombie: GET http://documentcloud.github.com/backbone/examples/todos/index.html
Zombie: GET http://documentcloud.github.com/backbone/examples/todos/index.html => 200
Zombie: GET http://documentcloud.github.com/backbone/test/vendor/json2.js
Zombie: GET http://documentcloud.github.com/backbone/test/vendor/jquery-1.5.js
Zombie: GET http://documentcloud.github.com/backbone/test/vendor/underscore-1.1.6.js
Zombie: GET http://documentcloud.github.com/backbone/backbone.js
Zombie: GET http://documentcloud.github.com/backbone/examples/backbone-localstorage.js
Zombie: GET http://documentcloud.github.com/backbone/examples/todos/todos.js
Zombie: GET http://documentcloud.github.com/backbone/examples/backbone-localstorage.js => 200
Zombie: GET http://documentcloud.github.com/backbone/test/vendor/json2.js => 200
Zombie: GET http://documentcloud.github.com/backbone/test/vendor/underscore-1.1.6.js => 200
Zombie: GET http://documentcloud.github.com/backbone/backbone.js => 200
Zombie: GET http://documentcloud.github.com/backbone/examples/todos/todos.js => 200
Zombie: GET http://documentcloud.github.com/backbone/test/vendor/jquery-1.5.js => 200
Zombie: Firing timeout 1, delay: 1
todolist inner:
Navigate to Todo List
✓ Can see todo list
✓ OK » 1 honored (3.824s)