Tag: tdd

使用Rails学习TDD的最佳资源

我终于掌握了轨道,并且对它开始学习最佳实践感觉很舒服,我的列表中的第一个是TDD原则。 使用Rails了解TDD的最佳资源是什么? 书籍,教程,任何东西。 我渴望学习!

从测试驱动开发到哪里开始?

我对测试驱动开发比较陌生,我只是想知道我应该从哪里开始? 我理解如何进行测试。 我只是说我应该先测试什么? 这是最好的做法吗? 我应该先测试模型吗? 控制器? 我应该首先编写集成测试,然后从那里构建所有内容以使其通过吗? 对此有何看法?

如何在Rails中使用Cucumber产生负面情况?

我有一个负面的方案来测试黄瓜。 具体来说,我想确保当有人发布带有无效句柄的URL时,该站点会返回错误。 我的场景看起来像: 场景:创建一个句柄太短的人当名为“Fred”的人处理“tooshort”更新然后我应该得到一个500错误 我的步骤看起来像 当/ ^名为“(。 )”的人用句柄“(。 )”更新$ / do | name,handle | 访问“/ mobile / update?handle =#{udid}&name =#{name}” 当我运行场景时,由于来自When的错误,它永远不会到达THEN部分 错误:无句柄(RuntimeError) 这是正确的,何时应该转500错误。 我只是不知道如何将当时作为否定测试。 也许我应该使用不同于什么时候的东西?

Rspec视图测试不会呈现更改

我正在使用rspec测试我的rails 3.2应用程序中的视图。 我已经为我的视图编写了测试以包含一些额外的输入字段,并且它们正确地失败了。 但是,在添加所需的输入字段后,测试仍然以相同的方式失败。 他们在终端输出表格,就好像我没有在视图中改变任何东西。 在浏览器中检查视图时,实际上存在字段,因此测试应该通过。 rspec没有加载最新的观点? 这是一些代码(我将它缩减为两个字段): it “renders the form to sign up” do rendered.should have_selector(“form”, action: “/users”, method: “post”) do |form| form.should have_selector(“input#user_email”, name: “user[email]”, type: “email”) form.should have_selector(“input#user_city”, name: “user[city]”, type: “text”) end end 电子邮件输入是我以前的旧输入,它确实识别它。 城市输入是新的,甚至不会出现在终端的视图输出中。 我究竟做错了什么?

无法弄清楚是什么导致我的测试失败

我是rails的新手,我在没有做TDD的情况下构建了一个应用程序,但我现在回去试图通过所有测试。 我已经通过了他们中的大多数,但还有一些与我无法弄清楚的相同问题有关。 该应用程序也正常运行,我只是无法通过这些测试。 测试失败并提供: 1) ProductsController POST create with valid params assigns a newly created product as @product Failure/Error: post :create, {:product => valid_attributes}, valid_session Paperclip::AdapterRegistry::NoHandlerError: No handler found for “#” # ./app/controllers/products_controller.rb:43:in `new’ # ./app/controllers/products_controller.rb:43:in `create’ # ./spec/controllers/products_controller_spec.rb:86:in `block (4 levels) in ‘ 2) ProductsController POST create with valid params creates a new Product […]

使用Rails进行应用程序测试

这更像是一般性问题和某种最佳实践讨论。 如何测试Rails应用程序? 有像BDD和TDD这样的咒语和像RSpec和Cucumber这样的框架但是多少就足够了,最好的方法是什么? 使用Cucumber作为集成测试是否足够? 你们也在编写额外的unit testing吗? 那么你的Rails测试策略是什么以及如何? 期待好的意见……

如何使用Cucumber来测试非Ruby,非Rack API

我用黄瓜做很多事情。 我非常喜欢它作为BDD环境。 因此,我想将其用作测试API的外部工具。 我想做的事情如下: Scenario: Hit api /info path and get info back When I visit the API path ‘/info’ Then I should see the following text “Here’s info on the API” 或类似的东西。 我主要想将API视为黑盒子,只测试输入和输出。 我不打算检查API中的任何内容。 我看过的与Cucumber(例如Capybara)合作的大多数库似乎是基于基于Rack的应用程序设计的。 我想要类似的东西,但不依赖于Rack。 存在哪些没有机架依赖性的gem(如果有的话)。 或者有没有办法使用Capybara来测试远程服务器上的API?

如何保持rspec测试DRY有很多“have_link”

我是Ruby on Rails的新手,我现在正在做http://ruby.railstutorial.org 。 根据我的理解,该语言应该严格遵循这个DRY标准,但在本教程中涉及到测试驱动开发时,它是如此WET。 例如 it { should have_link(‘Users’, href: users_path) } it { should have_link(‘Profile’, href: user_path(user)) } it { should have_link(‘Settings’, href: edit_user_path(user)) } it { should have_link(‘Sign out’, href: signout_path) } 在这里,我们有很多行几乎看起来一样。 我试过这个 it “should have following links from this array” do [ [‘Users’, href: users_path], [‘Profile’, href: user_path(user)], [‘Settings’, href: […]

使用rspec测试设计视图

我已经生成了运行rails g devise:views Devise的视图,现在想测试它们。 这就是我想出的: require ‘spec_helper’ describe “devise/sessions/new” do before do render end it “renders the form to log in” do rendered.should have_selector(“form”, action: user_session_path, method: :post) do |form| end end end 对于render语句,它给了我undefined local variable or method ‘resource’ 。 谷歌搜索后我发现我应该添加 @user.should_receive(:resource).and_return(User.new) 在render语句之前 – 但它仍然给我相同的错误,我不确定如何使用它。 我究竟做错了什么? 谢谢你的帮助。

Capybara ajax比赛条件

我经常遇到水豚问题,请求测试失败,因为水豚不会等待ajax事件完成后再继续。 谷歌似乎表明我应该使用:我的测试的resynchronize选项来解决这个问题。 但它没有用。 为了certificate这是一个问题,可以通过在ajax调用之后放置一个sleep语句来修复失败的测试。 这似乎是任何不好的做法,因为适当的延迟将根据运行测试的机器的速度而变化。 选择一个适当大的值会严重减慢运行带有大量ajax操作的测试套件的速度。 下面是失败/通过测试的一个例子。 单击“保存”之前的睡眠会使页面上的传递/失败区别开来。应该是has_content(’custom item’): it “should be able create a new todo item”, :js, :resynchronize, :focus do # Visit new action visit new_todo_list # Fill in the name fill_in “#name”, “test list” # Click on add item to launch inline popup find(‘a.add-item’).click within ‘#new_item’ do fill_in ‘todo_item_description’, :with => ‘custom […]