小编stu*_*rtc的帖子

rSpec和Rails3中的Stubbing Devise

你将如何使用rSpec在Rails 3中创建Devise.我有一个UsersController和一个User模型.这两个都与Devise有关,我正在编写控制器规格,我真的很难实现我的期望,因为Devise sign_in正在干扰工作.

任何事都会有所帮助.

rspec rspec2 ruby-on-rails-3

34
推荐指数
2
解决办法
2万
查看次数

nth-child不响应类选择器

除非它不应该,但我似乎nth-child无法承认类选择器.

我在另一个div中说了4个div,各种类和id.我需要选择具有所述类的div的第一个实例.例如:

#content .foo:nth-child(1) { margin-top: 0; }
Run Code Online (Sandbox Code Playgroud)

显然,再次first-child获得相同的效果,但它不会影响任何div.

现在,如果我想强制它使用该div,我可以这样做:

#content .foo:nth-child(3) { margin-top: 0; }
Run Code Online (Sandbox Code Playgroud)

恰好它是#content中的第3个div,这是没有意义的,因为我需要获得该类的第一个实例.

<div id="content">  
  <div id="action-bar"> </div>
  <div id="message"> </div>
  <div class="table"> </div>
  <div class="clear"> </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是HTML的一个示例,我也试过nth-of-type这样:

#content .table:nth-of-type(1) { margin: 0 }
Run Code Online (Sandbox Code Playgroud)

它再一次只在我说的时候回应nth-of-type(3).

编辑:

我已经建立了一个我在这里遇到的问题的工作示例:http://jsfiddle.net/aHwS8/

css css-selectors

32
推荐指数
2
解决办法
5万
查看次数

10
推荐指数
1
解决办法
5358
查看次数

jQuery Hover Flicker

我有一个jQuery和悬停事件的问题.

问题是尽管没有离开div,鼠标事件处理程序仍在触发.导致div闪烁.

这是一个例子:http://jsfiddle.net/Fxy9P/

如果你将鼠标缓慢移动到div上,它会反复激发效果,尽管不会离开div.

我究竟做错了什么?

jquery

4
推荐指数
1
解决办法
3131
查看次数

RSpec Rake文件并没有要加载的文件 - rake/tasklib

我正在尝试编写规范rake任务来加载bundler,但无论是否加载bundler我都得到:

no such file to load -- rake/tasklib
Run Code Online (Sandbox Code Playgroud)

下面是Rakefile

require 'rake'
require "rubygems"
require "bundler"
Bundler.setup(:default, :test)

task :spec do
  begin
    require 'rspec/core/rake_task'

    desc "Run the specs under spec/"
    RSpec::Core::RakeTask.new do |t|
      t.spec_files = FileList['spec/**/*_spec.rb']
    end
  rescue NameError, LoadError => e
    puts e
  end
end
Run Code Online (Sandbox Code Playgroud)

这似乎是罪魁祸首 require 'rspec/core/rake_task'

有什么建议?

我仍然可以使用rspec spec或运行我的规格,bundle exec rspec spec但我更喜欢使用rake任务.

ruby rake rspec rspec2

3
推荐指数
1
解决办法
5411
查看次数

用嘲弄测试两种不同的期望

我最近刚刚将Devise添加到我的第一个Rails3应用程序中,我在控制器测试方面遇到了一些麻烦.

我正在测试User控制器类,它与Devise使用的模型相同.所以在我的规范开头我有这个:

before(:each) do
  sign_in @user = Factory.create(:user)
end
Run Code Online (Sandbox Code Playgroud)

现在我可以在不使用模拟或存根的情况下通过测试:

describe "GET edit" do
  it "assigns the requested user as @user" do
    user = Factory(:user)
    get :edit, :id => user.id
    assigns(:user).should eql(user)
  end
end
Run Code Online (Sandbox Code Playgroud)

但是出于教育目的,我想知道如何让它与模拟和存根一起工作,通常它会完全直接,但似乎Devise User.find在控制器操作之前调用,并使测试失败.

describe "GET edit" do
  it "assigns the requested user as @user" do
    user = Factory(:user)
    User.expects(:find).with(:first, :conditions => {:id => 37}).returns(user)
    get :edit, :id => '37'
    assigns(:user).should be(user)
  end
end
Run Code Online (Sandbox Code Playgroud)

此外,通过添加twice到期望,这也将失败,因为第一次调用find与我正在设置的期望不同.

任何见解将不胜感激.

ruby rspec ruby-on-rails mocha.js rspec2

1
推荐指数
1
解决办法
1622
查看次数