2012-04-10 86 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}