2012-04-10 85 views
0

函數'start'將用戶名和密碼傳遞給函數logIn。問題是,我得到:將參數傳遞給coffeescript中的嵌套函數

「的ReferenceError:找不到變量:用戶名」

問題ocurse在片段結束。在代碼片段的第二個和第三個「@echo」中,變量「用戶名」顯示正確。

問題是:如何將參數用戶名和密碼進一步傳遞給嵌套函數?

段:

logIn = (username, password) -> 
     @echo '--- LogIn ---' 
     @echo '--- KNOWN HERE = ' + username + " ---" 
     @then -> 
      @echo '--- username KNOWN HERE = ' + username + ' ---' 
      @evaluate -> 
        @echo '--- @evaluate username NOT KNOWN HERE = ' + username + ' ---' 

全碼:

casper = require('casper').create({ 
     clientScripts: ["includes/jquery.min.js"], 
     verbose: true, 
     logLevel: 'debug' 
}) 

    logIn = (username, password) -> 
     @echo '--- LogIn ---' 
     @echo '--- '+username+' // '+password+" ---" 
     @then -> 
      @echo '--- username in do = ' + username + ' ---' 
      @evaluate -> 
       @echo '--- @evaluate username = ' + username + ' ---' 
       $('#id_email').val(username) 
       $('#id_password').val(password) 
       $('.AuthForm').submit() 

    start = -> 
     @start loginURL 
     @echo '--- accounts.length = ' + accounts.length + ' ---' 
     logIn.call @, accounts[currentAccount][0], accounts[currentAccount][1] 
+0

也許你混合製表符和空格?嘗試將製表符轉換爲空格,然後查看該行是否仍嵌套在「logIn」中。 – 2012-04-10 17:44:20

+0

我嘗試過,但它沒有幫助。 – DerMambo 2012-04-11 06:51:44

回答

0

您的問題是Casper#evaluate運行給定功能在你測試的頁面。該網頁無法訪問從你的測試腳本的usernamepassword變量,除非你通過考試。解決的辦法是改變

@evaluate -> 
    ... 

@evaluate ((username, password) -> 
    ... 
), {username, password}