CasperJS似乎無法看到通過app.settings從express傳遞的值。我有什麼要離開嗎?nodejs casperjs ejs express:casperjs看不到的設置值
在此先感謝任何能指引我解決問題的人!
這裏是一個Hello World節點服務器:
hello.js
var http = require('http'),
express = require('express'),
app = express();
app.configure(function()
{
app.set('view engine', 'ejs');
app.set('views', __dirname);
app.set('message', 'hello world!');
app.set('secretmessage', 'foobar');
app.get("/", function(req, res)
{
res.render('index.ejs', { layout:false });
});
});
http.createServer(app).listen(3000, function(){
console.log("Express server listening on port 3000");
});
在同一文件夾:
index.ejs
<!DOCTYPE html>
<html>
<body>
<input type="hidden" id="secret" value="<%= settings.secretmessage %>">
<p><%= settings.message %></p>
</body>
</html>
當我開始node hello.js
它告訴我正確的服務器監聽:
Express server listening on port 3000
這裏是h正如你所期望的那樣,tml返回,正如你所期望的那樣:
<!DOCTYPE html>
<html>
<body>
<input type="hidden" id="secret" value="foobar">
<p>hello world!</p>
</body>
</html>
我想用casperjs測試這個。這裏是我的測試代碼:
indextest.js
var casper = require('casper').create();
casper.start('http://localhost:3000', function start()
{
var secretExists = this.evaluate(function() { return __utils__.exists('#secret') });
var secretValue = this.evaluate(function() { return __utils__.getFieldValue('secret') });
casper.test.comment('Confirming hidden field secret exists and has value');
casper.test.assert(secretExists, 'secret exists');
casper.test.assertTruthy(secretValue, 'secret has value');
});
casper.run(function run() {
casper.test.done();
});
而且這裏的結果:
$ casperjs indextest.js
# Confirming hidden field secret exists and has value
PASS secret exists
FAIL secret has value
# type: assertTruthy
# subject: ""
而不是看到的secret
值作爲「foobar的」它是把它看作「」的。
我指出了一個小的語法錯誤,我在上面的casperjs代碼中已經更正了。不過,結果證明是一樣的。 – 2013-04-22 01:30:33