我正在尝试生成一个控制器,其中包含所有RESTful操作.我在链接文本中读到,我需要做的就是使用只有控制器名称来调用生成器,我会得到它.所以,我运行了"script/generate rspec_controller Properties",我得到了一个空的控制器.
任何其他建议将不胜感激.
我有这个:
<input class="string optional"
id="course_group_courses_attributes_2_name"
name="course_group[courses_attributes][2][name]"
placeholder="Lengua"
size="15"
type="text" />
</div>
Run Code Online (Sandbox Code Playgroud)
如何通过ID填写该字段?
在编写请求规范时,如何设置会话和/或存根控制器方法?我正在尝试在我的集成测试中删除身份验证 - rspec/requests
这是一个测试的例子
require File.dirname(__FILE__) + '/../spec_helper'
require File.dirname(__FILE__) + '/authentication_helpers'
describe "Messages" do
include AuthenticationHelpers
describe "GET admin/messages" do
before(:each) do
@current_user = Factory :super_admin
login(@current_user)
end
it "displays received messages" do
sender = Factory :jonas
direct_message = Message.new(:sender_id => sender.id, :subject => "Message system.", :content => "content", :receiver_ids => [@current_user.id])
direct_message.save
get admin_messages_path
response.body.should include(direct_message.subject)
end
end
end
Run Code Online (Sandbox Code Playgroud)
帮助者:
module AuthenticationHelpers
def login(user)
session[:user_id] = user.id # session is nil
#controller.stub!(:current_user).and_return(user) # controller is nil
end
end …Run Code Online (Sandbox Code Playgroud) 我是第二次做Rails教程.当我进入这个
rails generate integration_test static_pages
Run Code Online (Sandbox Code Playgroud)
我得到的spec/rails_helper.rb和spec/spec_helper.rb,而不是仅仅spec/spec_helper.rb
现在,当我运行我的测试时,它们比我上次这样做时更长(更"冗长")并且更慢.我想知道两个文件之间有什么区别,如果我做错了什么.另外,有没有办法摆脱rails_helper.rb文件而不搞乱一切?
我知道在Capybara,你可以这样做:
page.should have_css("ol li", :count => 2)
Run Code Online (Sandbox Code Playgroud)
但是,假设该页面仅具有一个匹配元素,则该错误不是非常具有描述性:
1) initial page load shows greetings
Failure/Error: page.should have_css("ol li", :count => 2)
expected css "ol li" to return something
Run Code Online (Sandbox Code Playgroud)
而不是这个相当模糊的错误消息,有没有办法以这样的方式编写断言,即错误输出将类似于'匹配'ol li',期望:2,找到:1'.显然我可以自己为这样的行为制作一个自定义逻辑 - 我问有没有办法在开箱即用的情况下做到这一点?
对于它的价值,我使用的是Selenium驱动程序和RSpec.
经过重大故障排除后,我发现我需要运行rake spec一次(我可以使用control-c中止),然后才能直接运行rspec(例如,在我们规范的子集上).我们正在运行Rails 3.0.7和RSpec 2.5.0.
显然,rake正在运行一些重要的数据库设置任务/代码(我们在根级别Rakefile和其他地方都有自定义代码).
如何在不运行的情况下运行rake测试数据库设置任务/代码rake spec?
除了能够在一个文件子集上运行rspec之外,我还使用specjour在多个核心上传播我们的规范(尚未成功将它们传播到局域网中),但我看到了与运行rspec相同的行为直接:我需要rake spec在specjour工作之前在每个测试数据库上运行(假设有两个核心):
rake spec TEST_ENV_NUMBER=1
control-c (after tests start)
rake spec TEST_ENV_NUMBER=2
control-c (after tests start)
specjour
Run Code Online (Sandbox Code Playgroud)
注意:我的config/database.yml有这个测试条目(对于并行测试宝石来说很常见):
test:
adapter: postgresql
encoding: unicode
database: test<%=ENV['TEST_ENV_NUMBER']%>
username: user
password:
Run Code Online (Sandbox Code Playgroud)
parallel_tests似乎正确设置了它的数据库,但我们的许多规范都失败了.
我还应该提一下,运行specjour prepare会导致Postgres记录它无法找到数据库的错误,但它会创建它们(没有表).在后续运行中,不会记录任何错误,也不会创建任何表.我的整个问题可能只是一个错误prepare,所以我在github上报告了它.
我认为我可以通过设置Specjour::Configuration.prepare.specjour/hooks.rb 在每个specjour测试数据库上运行任意代码,所以如果有任何rake任务或我需要运行的其他代码,它可能在那里工作.
我正在为Ruby on Rails应用程序中的模型编写Rspec测试.我在启动'rspec spec'时收到此错误
command:
/spec/models/client_spec.rb:4:in `<top (required)>': uninitialized constant Client (NameError)
Run Code Online (Sandbox Code Playgroud)
我使用Rails 4.0.0和Ruby 2.0.0
这是我的client_spec.rb:
require 'spec_helper'
describe Client do
it 'is invalid without first_name', :focus => true do
client = Client.new
client.should_not be_valid
end
end
Run Code Online (Sandbox Code Playgroud)
和Gemfile:
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.0.rc1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.0.rc1'
# Use Uglifier as compressor for JavaScript assets …Run Code Online (Sandbox Code Playgroud) RSpec中的it块和指定块之间有什么区别?
subject { MovieList.add_new(10) }
specify { subject.should have(10).items }
it { subject.track_number.should == 10}
Run Code Online (Sandbox Code Playgroud)
他们似乎做同样的工作.只是检查确定.
加载页面后,我有运行和隐藏的代码,并根据xhr返回的数据显示各种项目.
我的集成测试看起来像这样:
it "should not show the blah" do
page.find('#blah').visible?.should be_true
end
Run Code Online (Sandbox Code Playgroud)
当我在上下文中手动转到该测试运行的页面时,#blah 并不像我预期的那样可见.我怀疑Capybara正在查看页面的初始状态(在这种情况下是不可见的),在JS运行之前评估DOM的状态并且未通过测试.
是的,我设置:js => true了包含的描述块:)
任何想法将不胜感激!我希望我不必在这里故意拖延,感觉不稳定,会减慢速度.
我正在尝试编写一个模拟来自Dropbox的REST服务的一些返回值的测试,该服务通过嵌套哈希为我提供数据.
我无法弄清楚如何编码我的工厂,因为返回结果是一个带有内部的数组.会怎么样?
Factory.define :dropbox_hash do
??
end
Run Code Online (Sandbox Code Playgroud)
Dropbox数据如下所示:
["/home", {"revision"=>48, "rev"=>"30054214dc", "thumb_exists"=>false, "bytes"=>0, "modified"=>"Thu, 29 Dec 2011 01:53:26 +0000", "path"=>"/Home", "is_dir"=>true, "icon"=>"folder_app", "root"=>"app_folder", "size"=>"0 bytes"}]
Run Code Online (Sandbox Code Playgroud)
在我的RSpec中,我想要像这样的工厂电话:
Factory.create(:dropbox_hash)
Run Code Online (Sandbox Code Playgroud) rspec ×10
capybara ×3
ruby ×2
testing ×2
controller ×1
dsl ×1
factory-bot ×1
model ×1
rest ×1
rspec-rails ×1
rspec2 ×1
rspec3 ×1
specjour ×1
stubbing ×1