2013-04-12 7 views
5

を見つけることができませんアプリケーションWEBrickで動作してテストしようとしています。

var casper = require('casper').create({ 
    clientScripts: ['jquery-1.9.1.min.js'] 
}); 

//make sure page loads 
casper.start('http://127.0.0.1:3000', function() { 
    this.test.assertTitle('EZpub', 'EZpub not loaded'); 
}); 

//make sure all 3 fridges are displayed 
casper.then(function() { 
    //get fridges 
    var fridges = $('a[href^="/fridges/"]'); 
    this.test.assert(fridges.length == 3, 'More or less than 3 fridge links shown'); 
}); 

casper.run(function() { 
    this.echo('Tests complete'); 
}); 

答えて

14

あなたがいることに注意してください、しかし

Note The concept behind this method is probably the most difficult to understand when discovering CasperJS. As a reminder, think of the evaluate() method as a gate between the CasperJS environment and the one of the page you have opened; everytime you pass a closure to evaluate(), you're entering the page and execute code as if you were using the browser console.

casper.then(function() { 
    var fridges = casper.evaluate(function(){ 
     // In here, the context of execution (global) is the same 
     // as if you were at the console for the loaded page 
     return $('a[href^="/fridges/"]'); 
    }); 
    this.test.assert(fridges.length == 3, 'More or less than 3 fridge links shown'); 
}); 

をロードされているページへの参照を取得するためにevaluate()を使用する必要があるように見えるのドキュメントから: は、ここでは、コードのすべてです単純なオブジェクトだけを返すことができるので、評価の対象外のjQueryオブジェクトにアクセスすることはできません(つまり、JSオブジェクトを返すことはできません)。したがって、次のようなテストが必要なものを返さなければなりません。

casper.then(function() { 
    var fridgeCount = casper.evaluate(function(){ 
     // In here, the context of execution (global) is the same 
     // as if you were at the console for the loaded page 
     return $('a[href^="/fridges/"]').length; 
    }); 
    this.test.assert(fridgeCount === 3, 'More or less than 3 fridge links shown'); 
});  
+1

私はそれが問題だとは思わない。私が間違ってパスを綴るとエラーが出ます:jquey-1.9.1.min.jsのクライアント側の注入に失敗しました。これは現在のコードでは得られません。 – Cailen

+0

@Cailen、新しい回答を –

+0

よろしくお願いします!それをevaluate()で囲むことは正しいアプローチです。 – Cailen

関連する問題