我在rails 3.2.3和capybara上使用ruby来帮助创建请求规范.我的目标是创建一个测试注销的规范请求.网页:
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown">
Welcome <%= current_user.first_name + " "+ current_user.last_name%>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<a href="#">
<%= link_to "Sign out", destroy_user_session_path, :method => :delete%>
</a>
</ul>
</li>
Run Code Online (Sandbox Code Playgroud)
对于测试,我有
describe "sign out" do
it "should let user to sign out" do
login_as user, :scope => :user
# click_on "Welcome #{user.first_name} #{user.last_name}"
# Now click on Sign out
end
end
Run Code Online (Sandbox Code Playgroud)
我不知道如何使用capybara点击退出,因为它位于下拉菜单中,因此在页面上不可见.有人知道吗 ?
有没有其他方法可以点击下拉菜单中的元素?
Coffeescript支持字符串插值:
user = "world"
greeting = "Hello #{user}!"
Run Code Online (Sandbox Code Playgroud)
是否可以像在字符串中一样在正则表达式中使用插值?例如
regex = /Hello #{user}/g
Run Code Online (Sandbox Code Playgroud)
PS我知道我可以使用RegExp(greeting, 'g'),我只想要更清洁的代码.
给出以下表格:
Recipes
| id | name
| 1 | 'chocolate cream pie'
| 2 | 'banana cream pie'
| 3 | 'chocolate banana surprise'
Ingredients
| id | name
| 1 | 'banana'
| 2 | 'cream'
| 3 | 'chocolate'
RecipeIngredients
| recipe_id | ingredient_id
| 1 | 2
| 1 | 3
| 2 | 1
| 2 | 2
| 3 | 1
| 3 | 3
Run Code Online (Sandbox Code Playgroud)
如何构建SQL查询以查找recipe.name ='chocolate'和ingredients.name ='cream'的配方?
我有以下测试:
let(:client) { Descat::Client.new }
describe 'poblacio' do
it 'should set format correctly' do
client.poblacio('v1','json','dades')
expect (client.instance_variable_get(:format)).to eq('json')
end
end
Run Code Online (Sandbox Code Playgroud)
我有以下正在测试的代码:
module Descat
class Client
BASE_URL = 'http://api.idescat.cat/'
def initialize(attributes = {})
attributes.each do |attr, value|
self.send("#{attr}=", value)
end
end
def poblacio(version, format, operation, *args)
@format = format
end
end
end
Run Code Online (Sandbox Code Playgroud)
运行测试我一直在'
Failure/Error: expect (client.instance_variable_get(:format)).to eq('json')
NameError:
Run Code Online (Sandbox Code Playgroud)
但是,更改名称并没有帮助.
"
在我的Rails项目中,我尝试使用自定义字体.有很多与这个问题相关的答案,就像这个没有帮助的答案,我编辑development.rb:
# Add the fonts path
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
# Precompile additional assets
config.assets.precompile += %w( .svg .eot .woff .ttf )
Run Code Online (Sandbox Code Playgroud)
它仍然显示 No route matches [GET] "/assets/chalkduster-webfont.woff"
我设置我url:
@font-face {
font-family: 'chalkdusterregular';
src: url('chalkduster-webfont.eot');
src:url('chalkduster-webfont.svg#chalkdusterregular') format('svg'),
url('chalkduster-webfont.eot?#iefix') format('embedded-opentype'),
url('chalkduster-webfont.woff') format('woff'),
url('chalkduster-webfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)
我font_path('')在源代码中尝试过,font-url()但它也无法运行.:(
我正在阅读RSpec,我正在试图弄清楚RSpec的"应该"是如何实现的.
有人可以介绍一下这个函数的元性质是如何工作的吗?
代码位于:
http://github.com/dchelimsky/rspec/blob/master/lib/spec/expectations/extensions/kernel.rb
TIA,
-daniel
澄清:
target.should == 5
Run Code Online (Sandbox Code Playgroud)
目标的价值是如何传递给"应该"的,而这又是"=="与5的对比?
使用RSpec测试以下代码的最佳方法是什么?我应该测试什么?show动作打开一个文件并对其进行流式传输.此外,如果操作依赖于某处存在的文件,我可以测试吗?
def show
image_option = params[:image_option]
respond_to do |format|
format.js
format.pdf {open_bmap_file("#{@bmap.bmap_pdf_file}", 'application/pdf', "#{@bmap.bmap_name}.pdf", "pdf", "pdf")}
format.png {open_bmap_file("#{@bmap.bmap_png_file}", 'image/png', "#{@bmap.bmap_name}.png", "png", image_option)}
end
end
private
def open_bmap_file(filename, application_type, send_filename, format, image_option = nil)
filename = "app/assets/images/image_not_available_small.png" unless File.exist? filename
path = Bmap.bmaps_pngs_path
case image_option
when "image"
filename = "#{@bmap.bmap_name}.png"
when "large_thumbnail"
filename = "#{@bmap.bmap_name}_large_thumb.png"
when "thumbnail"
filename = "#{@bmap.bmap_name}_thumb.png"
when "pdf"
filename = "#{@bmap.bmap_name}.pdf"
path = Bmap.bmaps_pdfs_path
else
filename = "#{@bmap.bmap_name}.pdf"
path = Bmap.bmaps_pdfs_path
end
begin
File.open(path + filename, 'rb') …Run Code Online (Sandbox Code Playgroud) 在Ruby中,你可以做到foo.inspect并且无论类型如何,它都能为任何对象输出一些理智的东西.
如何在JavaScript中实现相同的功能?
假设我有两个视图(paginationview和postsview)和一个集合(postscollection).每当在分页视图中单击.next按钮时,我调用postscollection中的下一个函数,post集合从服务器获取新页面的帖子(代码被简化).现在在我的帖子视图中,我只想显示最后一页中的帖子.我不想将我的视图绑定到集合中的"add"事件,因为有更多的情况会将某些内容"添加"到集合中.我希望我的postsview中的'renderlist'功能只在我的postscollection中调用'nextPage'函数时被调用.如何将这些功能连接在一起?
//分页视图
var PaginationView = Backbone.View.extend({
events:{
'click a.next' : 'next',
},
next: function() {
this.collection.nextPage();
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
//集合
var PostsCollection = Backbone.Collection.extend({
model: model,
initialize: function() {
_.bindAll(this, 'parse', 'url', 'pageInfo', 'nextPage', 'previousPage');
this.page = 1;
this.fetch();
},
parse: function(response) {
console.log(response);
this.page = response.page;
this.perPage = response.perPage;
this.total = response.total;
this.noofpages =response.noofpages;
return response.posts;
},
url: function() {
return '/tweet/' + '?' + $.param({page: this.page});
},
nextPage: function() {
console.log("next page is called");
this.page = this.page …Run Code Online (Sandbox Code Playgroud) 如果我有一个mix.exs类似的文件:
defmodule Mix.Tasks.My_task do
use Mix.Task
@shortdoc "Perform my task"
def run(_) do
IO.puts "Working"
end
end
defmodule ElixirKoans.Mixfile do
use Mix.Project
def project do
...
end
Run Code Online (Sandbox Code Playgroud)
我很乐意用这个来运行mix my_task.
我如何my_task成为默认值,所以当我在mix没有任务的情况下运行时会执行它?
rspec ×4
ruby ×3
javascript ×2
backbone.js ×1
capybara ×1
coffeescript ×1
debugging ×1
elixir ×1
elixir-mix ×1
font-face ×1
fonts ×1
join ×1
logout ×1
sql ×1
testing ×1
where ×1