小编Eri*_* M.的帖子

有没有办法用guard + guard-rspec强制运行所有规格?

是否有类似于autotest的ctrl + c强制运行所有规格?我还在努力调整我的.Guard文件,但暂时可以强行运行所有规格而不重新启动后卫吗?ctrl + c退出警卫.

testing rspec ruby-on-rails guard

4
推荐指数
2
解决办法
5051
查看次数

如何为命名函数参数设置默认值?

我已经找到了答案,但我发现的似乎不起作用。如果我运行weather "NYC",echo'd 行是“weather = NYC”,但是如果我运行weather,echo'd 行是“weather =”。如何设置默认值$location

function weather --argument location --description "Display weather information for a given location"
  set -q location; or set location "San Francisco, CA"
  echo "weather = $location"
  curl -H "Accept-Language: en" "wttr.in/$location?u"
end
Run Code Online (Sandbox Code Playgroud)

更新:

我已经能够通过以下更改获得所需的行为,但仍然很好奇是否set -q location; or set location "San Francisco, CA"应该工作。它似乎在命令行上,但不在函数中。

if not test -n "$location"
  set location "Washington, DC"
end
Run Code Online (Sandbox Code Playgroud)

fish

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

确定链接是否存在w/Cucumber/Capybara

我想验证页面上是否存在具有特定href的链接.我目前正在做我应该看到"/ some-link-here"但似乎失败了.如何确保链接存在而无需点击+我应该在"/ some-link-here"页面上?

cucumber capybara

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

如何在太阳黑子/ solr全文搜索中逃避非法字符?

我有一个sunspot/solr设置全文搜索模型属性.我的QA刚搜索了"和+,两者都导致了500错误:

Solr响应: orgapachelucenequeryParserParseException_Cannot_parse__Encountered_EOF_at_line_1_column_0_Was_expecting_one_of_____NOT______________________________QUOTED______TERM______PREFIXTERM______WILDTERM__________________NUMBER______TERM____________

如何使这些查询字符串安全?太阳黑子有办法解决这个问题吗?

search solr sunspot ruby-on-rails-3

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

如何使用RSpec正确测试CanCan功能

我是第一次测试CanCan功能,但感到很沮丧。我丢失了一些东西...即使我在can:invite_to块内返回false / true,我仍然没有通过规格。我是否缺少使用CanCan匹配器?还是存根?或在CanCan中定义功能?

我有什么想念的吗?

能力

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new

    can :invite_to, Network do |network|
      network.allows_invitations? && (user.admin? || user.can_send_invitations_for?(network))
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

Capacity_spec.rb

require 'cancan'
require 'cancan/matchers'
require_relative '../../app/models/ability.rb'

class Network; end;

describe Ability do
  let(:ability) { Ability.new(@user) }

  describe "#invite_to, Network" do
    context "when network level invitations are enabled" do
      let(:network) { stub(allows_invitations?: true) }

      it "allows an admin" do
        @user = stub(admin?: true)
        ability.should be_able_to(:invite_to, network)
      end

      it "allows a member if the …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails cancan ruby-on-rails-3

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

将Rails多态用于嵌套注释

我需要在Rails 3应用程序,它允许在许多模型(文章,帖子等)和我辩论轧制线沿线的我自己的解决方案的意见建立一个嵌套评论系统这篇文章.有一些宝石可供使用,例如使用awesome_nested_set的acts_as_commentable_with_threading,但是他们对我的需求感到臃肿.

  1. 我需要能够为多个模型添加注释
  2. 我需要能够无限深入地为评论添加评论
  3. 我需要能够有效地检索帖子,文章等的所有后代
  4. 我需要能够在适当的嵌套中有效地呈现注释

我的问题是,如果我能够解决我可能遇到的潜在问题.我想避免走一条路只是为了走向死胡同.我最初的担忧涉及有效地查询儿童.比如说,获取一篇文章后代评论列表(孩子和孩子的孩子).

有人对此有意见吗?谢谢.

polymorphism comments nested ruby-on-rails

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

如何在Capybara验收测试中存根控制器/ current_user方法

我有一个调用current_user.eligible_for_reward的辅助方法?我希望在Capybara验收规范中存根.在我的模型中,我有一个占位符虚拟方法:

User.rb

def eligible_for_reward?
  "blah"
end
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的:

  1. 我试过stubing current_user,但这会导致"修改冻结对象"错误,因为控制器是零.我相信只有在我使用RSpec的get而不是访问some_path时才会设置控制器.我需要坚持访问some_path,我相信,否则我的page.should ...都会失败,因为页面没有设置.

  2. 我尝试以用户身份登录(login_as(用户)成功运行注册/登录)然后将user.eligible_for_reward?存根,但这似乎不起作用,因为我仍然回到测试"blah"

是否有一种很好的方法来隐藏这种方法?

testing rspec capybara ruby-on-rails-3

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

使用RSpec测试辅助方法

我应该如何使用RSpec测试这个助手?

module ApplicationHelper
  def build_rpx_url(provider)
    signin_url(provider) << "?token_url=" << token_url << provider_params(provider)
  end


  private

  def signin_url(provider)
    case provider.downcase
    when 'facebook'; 'https://login.xyz.net/facebook/connect_start'
    when 'google';   'https://login.xyz.net/openid/start'
    when 'twitter';  'https://login.xyz.net/twitter/start'
    when 'linkedin'; 'https://login.xyz.net/linkedin/start'
    when 'yahoo';    'https://login.xyz.net/openid/start'
    end
  end

  def provider_params(provider)
    params = case provider.downcase
    when 'facebook'; ["ext_perm=publish_stream,email,offline_access"]
    when 'google';   ["openid_identifier=https://www.google.com/accounts/o8/id"]
    when 'twitter';  []
    when 'linkedin'; []
    when 'yahoo';    ["openid_identifier=http://me.yahoo.com/"]
    end

    params.empty? ? '' : "&" << params.join('&')
  end

  def token_url
    "#{new_user_session_url}?authenticity_token=#{Rack::Utils.escape(form_authenticity_token)}"
  end
end
Run Code Online (Sandbox Code Playgroud)

rspec

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

控制器名称和演示者名称空间之间的名称冲突

我正在使用演示者模式,并且似乎遇到了不一致的类命名冲突。我有一个带有主页方法的页面控制器,我想让该方法使用Pages :: HomepagePresenter类,但最终出现错误:

uninitialized constant ActionController::Caching::Pages::HomepagePresenter
     # ./app/controllers/pages_controller.rb:3:in `homepage'
     # ./spec/requests/pages_spec.rb:14:in `block (5 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

假设问题出在演示者的Pages控制器和Pages命名空间上,但是当为演示者使用Homepage控制器和Homepage命名空间时似乎没有问题。

我想念什么吗?以下是我尝试过的应用程序行为组合:

# Ideal, but this breaks with the aforementioned error
presenters/pages/homepage_presenter.rb (class Pages::HomepagePresenter)
controllers/pages_controller.rb (class PagesController)


# Works
presenters/page/homepage_presenter.rb (class Page::HomepagePresenter)
controllers/pages_controller.rb (class PagesController)


# Workes; I would expect this to break
presenters/homepage/index_presenter.rb (class Homepage::IndexPresenter)
controllers/homepage_controller.rb (class HomepageController)
Run Code Online (Sandbox Code Playgroud)

controller ruby-on-rails presenter

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