我们有一个带有自定义 gem 的 git 存储库。要安装它 Gemfile 有一行:
gem 'my-gem', :git => 'git@192.168.1.100:my-gem.git'
Run Code Online (Sandbox Code Playgroud)
安装 gem 后,它不会显示在 RubyMine 的外部库中。
如何使 gem 显示在外部库中并自动完成 gem 中的代码?
我一直在努力学习Ruby中的Cucumber,我认为最好的方法就是创建自己的项目.但是,我想知道什么是一个好的"给定"条款.
据我所知,"给定"基本上是一个设置,"当"是被测试的功能,"然后"是预期的结果.
例如,让我们假设我正在基于踩着熔岩的实体制作一个Minecraft场景.我目前的GWT看起来像这样:
Scenario: Take damage when I stand in lava.
Given an entity is standing next to a block of lava with 10 health
When the entity steps in the block of lava
Then the entity should take 2 damage
Run Code Online (Sandbox Code Playgroud)
然而,这个"给定"步骤看起来相当'关闭'.我不得不站在一块熔岩旁边让这个场景发挥作用.同样 - 我将如何编写(并测试)一个应该经常发生的场景的GWT - 例如,我怎样才能确保只要我的实体保持在熔岩中,它将继续受到损害?我发现很难编写能够测试实体在熔岩中存放多久的代码.系统如何知道实体在熔岩中停留了多长时间?在我看来,测试那种东西需要我几乎写下世界其他地方,以便能够说"这个实体已经在熔岩中持续x秒,推进模拟,我失去了多少马力"
思考?
使用RSpec,如何编写一组DRY的shared_examples,可以用于正面和负面的情况?
适用于肯定案例的shared_examples示例:
shared_examples "group1" do
it "can view a person's private info" do
@ability.should be_able_to(:view_private_info, person)
end
# also imagine I have many other examples of positive cases here
end
Run Code Online (Sandbox Code Playgroud)
如果有一些相对的it_should_behave_like,比如it_should_not_behave_like,那简直太好了.我理解示例的文本必须是灵活的.
我试图测试会Lead.new(params).active!引发错误.最好的方法是什么?
class Lead < ActiveRecord::Base
enum status: { stale: 0, active: 1, converted: 2 }
validate :existing_lead, on: :create
private
def existing_lead
if new_record? && (stale? || converted?)
errors.add(:status, "invalid for new leads")
end
end
end
Run Code Online (Sandbox Code Playgroud)
我知道我可以手动设置枚举值,然后测试valid?我实例化的对象,但我希望有一种方法可以测试,stale!并converted!在调用时保存到数据库.
我有非Javascript规范和使用capybara/capybara-webkit的Javascript功能规范.
我有一些测试,我期望在非Javascript模式下失败,但他们正在通过.我在浏览器中尝试了关闭Javascript的功能,但功能确实无法按预期工作.但在Capybara,它的确有效.
我也尝试添加js: false到单个测试中,以确保我的配置中没有隐藏的内容.规范仍然通过.
硒宝石不包含在我的Gemfile中.
我们当前在工作中采用的系统是编写一些极其复杂的查询,这些查询执行多个计算并具有多个连接/子查询。我认为我没有足够的经验来判断这是否正确,所以我同意并尝试使用这个系统,因为它有明显的好处。
我们目前遇到的问题是编写查询的人犯了很多错误并假设一切都是正确的。我们现在已经指派了一名测试人员来分析所有查询,但这仍然证明非常耗时且压力很大。
我想知道我们如何创建一个自动化程序(如果可能的话,无需专门用代码编写它,因为我可以弄清楚如何做到这一点)来验证一组 10 多个不同的输入,验证输出数据并说如果计算正确。
我知道我可以使用数据库中的特定数据编写一个脚本,并使用 c# 创建一个脚本(数据库是 SQL Server)并验证所有出来的值,但我想知道官方的“标准”是什么,因为我的经验是我在这方面有所欠缺,希望能够改进。
如果需要,我很乐意添加更多信息,如果需要,请添加评论。谢谢。
编辑:我正在使用 c#
使用案例:
CI服务器轮询一些VSC存储库并为每个修订运行测试套件.如果提交了两个或多个修订版,即使在相对较小的时间间隔内,我希望CI服务器将每个修订版放入队列中,为每个版本运行测试,存储结果,并且永远不再为这些提交运行测试.我不希望CI服务器并行启动作业,以避免在许多同时作业的情况下出现性能问题和崩溃.
哪个CI服务器能够处理这个?
我的另外一个不那么重要的要求是我使用Python并且希望使用用Python编写的软件,因此我查看了Buildbot项目,我特别想看看这个工具的评论是否可以在一般情况下使用它是否能够取代Travis或Jenkins等大多数流行解决方案.
如何CMD + D使用RubyMine在Sublime Text中完成相同的操作?
例如 root this and that and this root.
rootCMD+D选择两者root(在崇高中)root
在RubyMine中如果我按住alt并单击我想要的单词,它将复制那样的游标.这就是我想要的,但我不想点击下一个单词...我只想要像CMD+DSublime Text 一样的非点击键盘快捷键,它足够聪明,可以选择所有相同的单词.

我们的项目就像适用于大量不同其他库的适配器/外观接口.依赖关系以某种方式重叠,有时会发生冲突,有时甚至会使项目中断,因为错误版本的依赖项会提供相同接口的错误行为.我们使用Ivy和Ant来进行基本的依赖关系管理.在早期管理依赖关系和检测错误行为的最佳做法是什么?
我正在尝试运行该$ rspec命令但是我的所有控制器测试都失败了,除非我明确地添加:type => :controller到每个规范中.
这是我得到的错误:
1) AccountsController GET index assigns all accounts as @accounts
Failure/Error: get :index, {}, valid_session
NoMethodError:
undefined method `get' for #<RSpec::ExampleGroups::AccountsController_2::GETIndex:0x007fd96c8a6a68>
# ./spec/controllers/accounts_controller_spec.rb:36:in `block (3 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)
这是生成的规范:
require 'spec_helper'
# This spec was generated by rspec-rails when you ran the scaffold generator.
# It demonstrates how one might use RSpec to specify the controller code that
# was generated by Rails when you ran the scaffold generator.
#
# …Run Code Online (Sandbox Code Playgroud)