Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么在';耙试验';除';之外'';F';或';E';(ruby 1.9.2p290,Rails 3.0.9)?_Ruby On Rails_Ruby_Ruby On Rails 3_Unit Testing_Rake - Fatal编程技术网

Ruby on rails 为什么在';耙试验';除';之外'';F';或';E';(ruby 1.9.2p290,Rails 3.0.9)?

Ruby on rails 为什么在';耙试验';除';之外'';F';或';E';(ruby 1.9.2p290,Rails 3.0.9)?,ruby-on-rails,ruby,ruby-on-rails-3,unit-testing,rake,Ruby On Rails,Ruby,Ruby On Rails 3,Unit Testing,Rake,当我过去运行“rake测试”时,每次测试都会看到“.”或“F”或“E”。 一切顺利时,输出的是一行“.” 现在,尽管我所有的测试都通过了,但我看到程序输出在“.”行中间 我不确定发布输出的最佳方式,但以下是首次发行: perrys-MacBook-Pro:iway perry_mac$ rake test:functionals --trace ** Invoke test:functionals (first_time) ** Invoke test:prepare (first_time)

当我过去运行“rake测试”时,每次测试都会看到“.”或“F”或“E”。 一切顺利时,输出的是一行“.”

现在,尽管我所有的测试都通过了,但我看到程序输出在“.”行中间

我不确定发布输出的最佳方式,但以下是首次发行:

perrys-MacBook-Pro:iway perry_mac$ rake test:functionals --trace
** Invoke test:functionals (first_time)
** Invoke test:prepare (first_time)
** Invoke db:test:prepare (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:abort_if_pending_migrations
** Execute db:test:prepare
** Invoke db:test:load (first_time)
** Invoke db:test:purge (first_time)
** Invoke environment 
** Execute db:test:purge
** Execute db:test:load
** Invoke db:schema:load (first_time)
** Invoke environment 
** Execute db:schema:load
** Execute test:prepare
** Execute test:functionals
Loaded suite /Users/perry_mac/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/rake_test_loader
Started
.........................."Welcome joe : "
."Welcome joe : "
."Welcome joe : "
."Welcome joe : "
.................."Welcome bob : "
...........
Finished in 0.998462 seconds.

58 tests, 81 assertions, 0 failures, 0 errors, 0 skips

Test run options: --seed 15796
生成输出的代码行是: app/views/layouts/application.html.erb

  <div id="nav">
      <% if current_user %>
            <% str= "Welcome " + current_user.username + " : "%>
            <%= p str %>
      <%= link_to "Edit Profile : ", edit_user_path(current_user.id)%>
      <%= link_to "Logout", :logout%>
      <% else %>
      <%= link_to "Register", new_user_path%> |
      <%= link_to "Login", :login %>
      <% end %>
  </div>

|
“Welcome joe:”和“Welcome bob:”MSG是用户成功登录后看到的预期程序输出。bob和joe是在fixtures文件中创建的用户名。我不明白为什么在“rake测试”中会看到MSG,我看到的是相同的行为,而没有使用trace。请评论A)为什么我看到一些程序输出,而不是其余的;B)为什么我看到任何?

Grep for“put”或其他写入应用程序或测试代码中的stdout的代码。有东西正在向标准输出泄漏数据

看起来您的视图模板正在将内容以及视图发送到stdout:

    <%= p str %>


p函数将字符串发送到stdout,然后返回字符串。谢谢你的回答。我以前从未看到过这种意外的输出,现在我看到了。我已经有一段时间没变了。我不知道为什么这一行突然开始做它正在做的事情。我只是试着把“p”换成“puts”,然后看到了同样奇怪的事情。嗯。。。我只是在我的应用程序代码中使用了“puts”,这是我唯一使用puts的地方。呵呵。尽管如此,在之前的rake测试期间,该行从未将输出通过管道传输到屏幕。为什么是现在?这不就是(p和put)的用法吗?我不知道为什么他们的输出在“rake测试”期间开始出现。如果我注释掉这行,那么在rake测试期间就不会出现任何消息,但在“运行时”期间也不会出现任何消息。最重要的是,我想了解更多关于rake测试的信息,并且我已经开发了一种低容忍度,可以不抓住像这样的怪癖。我希望这会在某个时候产生一个学习的机会。在模板中呈现值时,您不需要
p
,只需将表达式包装在erb标记中即可,例如,感谢您的评论。是的,我做到了。它将删除意外的输出。尽管如此,我在“rake测试”期间使用了str,但并没有看到str输出。我不知道为什么我开始这样做。也许有一个指示输出的标志,我不知怎么改变了它?无论如何,谢谢你的帮助。