我最近开始研究一个Rails应用程序,它已经有大量的QUnit测试用于测试ember.我被指控使用CI设置应用程序(我决定使用CodeShip).我目前面临的问题是,我运行qunit测试的唯一方法是去http://localhost:3000/qunit.我需要设置一种从命令行运行测试的方法.我做了大量的研究,尝试了至少10种不同的解决方案,但没有成功.
目前我正在尝试使用茶匙,但我没有设法让它工作.任何帮助将非常感激.如果我需要发布有关设置的更多信息,请告诉我.
javascript continuous-integration ruby-on-rails qunit ember.js
我有一个使用Recurly的rails应用程序.我正在尝试下载PDF并在浏览器中呈现它.我目前有一个链接:
link_to 'Download', get_invoice_path(:number => invoice.invoice_number)
Run Code Online (Sandbox Code Playgroud)
关联的控制器具有如下所示的get_invoice方法:
def get_invoice
begin
@pdf = Recurly::Invoice.find(params[:number], :format => 'pdf')
rescue Recurly::Resource::NotFound => e
flash[:error] = 'Invoice not found.'
end
end
Run Code Online (Sandbox Code Playgroud)
当我点击链接时,我得到了在我的控制台中以二进制形式呈现的PDF.如何在浏览器中渲染PDF?
我试图在装饰器中为各个函数编写规范.我有我的助手的规格如下(这只是一个例子):
book_helper.rb
module BookHelper
def heading_title
@book.name[0..200]
end
end
Run Code Online (Sandbox Code Playgroud)
book_helper_spec.rb
require 'spec_helper'
describe BookHelper do
subject { FactoryGirl.build(:book) }
it 'limits title to 200 characters' do
title = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium.'
subject.name = title
subject.save
@book = subject
expect(heading_title).to eq(title[0..200])
end
end
Run Code Online (Sandbox Code Playgroud)
鉴于以下装饰器,我如何编写该函数的规范?
book_decorator.rb
class BookDecorator < Draper::Decorator …Run Code Online (Sandbox Code Playgroud) 我有一个 rspec/selenium/capybara 套件,已经完美运行了几个月。现在突然我收到一大堆错误:
Failed to open TCP connection to 127.0.0.1:9515 (Only one usage of each socket address (protocol/network address/port) is normally permitted
Run Code Online (Sandbox Code Playgroud)
我正在测试一个实际的网站,而不是本地实例,所以我根本不知道为什么会出现 127.0.0.1。我知道这里还有很多与此类似的其他问题,但我还没有找到可以解决我的问题的问题。
不确定还需要包含哪些其他信息...
无论如何,是否允许 在语义记录中使用非绑定空间或其他HTML编码字符?我遇到的问题是该;角色被软件视为记录的结尾.
例如:假设我有一份婚姻记录,其结果是有2个人结婚的姓氏,结婚年份和他们结婚的国家.
[[has marriage::Jones & Smith; 1990; United States]]看起来应该很轻松.问题是&被编码为&.然后软件看到;并且我最终得到一条看起来像的记录:Jones & Smith; 1990因为;在结尾处&被视为记录的一部分的结尾.有人知道这个吗?
我有许多模板可以根据公式创建标题.我想知道是否有创建"编辑"链接,将直接带您到该部分?它目前的工作方式,编辑链接可以让您编辑模板本身.我是否可以创建一个自定义链接,让您保持在页面上并带您到正确的部分?
这是一些示例代码,以帮助清理...
模板:头:
==={{{1}}}===
This is a heading titled "{{{1}}}"
Run Code Online (Sandbox Code Playgroud)
测试页面:
=Section 1=
{{head|1.1}}
{{head|1.2}}
{{head|1.3}}
=Section 2=
{{head|2.1}}
{{head|2.2}}
{{head|2.3}}
Run Code Online (Sandbox Code Playgroud)
目前,如果我想编辑模板"2.3"的信息,我必须编辑第2节的所有内容.(注意,对于这个例子,这不是什么大问题.对于我正在使用的实际模板我的网站,模板有几十个参数,有时在一个部分有10个或更多.)
最重要的是,有没有办法在{{head}}模板内部创建一个自定义编辑链接,可以直接在"测试页面"页面上编辑模板调用?希望有道理.
编辑:有没有办法利用"锚"标签?锚可以传入URL吗?
给定以下命令,lsof -i:1025我得到:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 12345 john 11u IPv4 0xb2f4161230e18fd57 0t0 TCP localhost:foobar (LISTEN)
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写脚本来获取该PID(12345)并杀死它。目前,我必须运行lsof -i:1025,获取该PID,然后运行kill -9 12345。
我有一个用户表,列出用户的ID,姓名,电子邮件和用户名.我试图做的是验证该表中的特定条目.
基本上我想要做的是找到ID = 22的行,然后验证name = John Smith,email = john@smith.com和username = jsmith.该功能设置如下所示.我不明白的是几件事......
我以为我可以做一种for循环,但无法弄清楚如何设置has_selector?条件.(下面是伪代码)
page.all('tr').each do |tr|
next unless tr.has_selector?('td.id = 22') #psuedocode
expect(tr.get('td.name').to eq("John Smith")
#other expects here...
end
Run Code Online (Sandbox Code Playgroud)
表格代码
<table class="table table-striped table-condensed">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<% @users.each do |user| %>
<tr>
<td class="id"><%= user.id %></td>
<td class="name"><%= link_to user.name, user %></td>
<td class="email"><%= user.base_name %></td>
<td class="username"><%= user.username %></td>
</tr>
<% …Run Code Online (Sandbox Code Playgroud) 我在Rspec中编写了一个自定义match方法,该对象将对象与哈希匹配。我想做的是为的每一行设置自定义失败消息expect。
describe "/cars" do
car = FactoryGirl.create(:car, name: 'Alpha')
describe car do
it "displays single items" do
get cars_path
parsed_response = JSON.parse(response.body)
record_hash = parsed_response['cars'][0]
is_expected.to be_a_car_match_of(record_hash)
end
end
end
RSpec::Matchers.define :be_a_car_match_of do |hash|
match do |car|
expect(car.id).to eq(hash['id'])
expect(car.name).to eq(hash['name'])
end
failure_message do |car|
"expected that #{car} would be a match of #{hash}"
end
end
Run Code Online (Sandbox Code Playgroud)
所以我想要的是以下内容:
RSpec::Matchers.define :be_a_car_match_of do |hash|
match do |car|
expect(car.id).to eq(hash['id']) 'ids did not match'
expect(car.name).to eq(hash['name']) 'names did not match'
end
end …Run Code Online (Sandbox Code Playgroud) 我有一个名为工作订单的对象,它具有以下架构:
# == Schema Information
#
# Table name: work_orders
#
# id :integer not null, primary key
# due_on :date
# name :string(255)
Run Code Online (Sandbox Code Playgroud)
显示对象时我还有一个 Json 输出:
{
id: 1,
due_on: "2015-06-08",
name: "my work order"
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用 rspec 来确认 json 显示的日期与对象的日期匹配。这是我为其他物体做过 50 次的事情......
我有以下内容:
exemplar = FactoryGirl.create(:work_order)
...
puts "Test: #{exemplar.due_on}"
expect(exemplar.name).to eq(hash['name']) #This works fine!
expect(exemplar.due_on).to eq(hash['due_on']) #This blows up...
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
Test: 2015-06-08
expected: "2015-06-08"
got: Mon, 08 Jun 2015
Run Code Online (Sandbox Code Playgroud)
我不明白“Mon, 08 Jun 2015”是从哪里来的。当我用 put 语句打印出日期时,它显示为 2015-06-08...