我正在使用Jasmine来测试是否创建了某些对象并调用了它们的方法.
我有一个jQuery小部件,它创建flipcounter对象并调用它们的setValue方法.flipcounter的代码在这里:https://bitbucket.org/cnanney/apple-style-flip-counter/src/13fd00129a41/js/flipcounter.js
flipcounters使用以下方式创建:
var myFlipCounter = new flipCounter("counter", {inc: 23, pace: 500});
Run Code Online (Sandbox Code Playgroud)
我想测试创建flipcounters并调用setValue方法.我的问题是如何在创建这些对象之前监视这些对象?我是否会监视构造函数并返回虚假对象?示例代码确实会有所帮助.谢谢你的帮助!:)
更新:
我已经尝试过像这样监视flipCounter了:
myStub = jasmine.createSpy('myStub');
spyOn(window, 'flipCounter').andReturn(myStub);
//expectation
expect(window.flipCounter).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)
然后通过flipCounter测试setValue调用:
spyOn(myStub, 'setValue');
//expectation
expect(myStub.setValue).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)
初始化flipCounter的第一个测试很好,但是为了测试setValue调用,我得到的是'setValue()方法不存在'错误.我这样做是对的吗?谢谢!
我知道在使用时gem install,gem将存储在/home/username/.rvm/gems/下,gem下安装gem.
但是如果我使用Bundler并在Gemfile中指定gem,那么当我运行bundle install时,那些gem会被存储在哪里?如果我已经安装了gem gem install,如果我运行bundle install,它会使用之前安装的gem gem install吗?
我在另一个帖子上找到了这个答案..
使用此语法,如何将类添加到特定按钮?
$("#mydialog").dialog({
buttons: {
'Confirm': function() {
//do something
$(this).dialog('close');
},
'Cancel': function() {
$(this).dialog('close');
}
}
});
Run Code Online (Sandbox Code Playgroud) 我对这两个术语感到困惑,这就是我所知道的:
多态性是通过公共接口处理不同类型的对象的能力.鸭子打字时,是一种动态类型,允许不同类型的对象响应相同的方法.
据我所知,多态性更多的是创建一个可以跨不同类共享的接口.而鸭子打字是关于松散打字,只要在消息的接收者上找到方法就可以调用方法.
它是否正确?我对两者感到很困惑,他们似乎有关系,但我不知道他们的关系是什么.非常感谢提前!
RSpec stub_model和mock_modelRSpec有什么区别?到目前为止,我知道存根用于防止实际方法被调用并返回预定义值,而模拟实际上是期望并且要求在接收器上调用该方法.
我也知道这些存根/模拟用于允许隔离测试,例如在控制器中而不触及模型.但我仍然对这两种方法感到困惑,究竟每种方法都使用了吗?非常感谢细节和例子.非常感谢!
我目前正在使用Capistrano,Passenger和Nginx以及我的Rails应用程序,但是,我仍然对它如何一起工作感到困惑.
这是我目前所知道的:
Nginx是一个响应请求的Web服务器,比如Apache,但更轻量级.
Capistrano用于部署Web应用程序,它上载应用程序代码并运行一系列脚本并迁移数据库.
乘客对我来说是一个神秘的盒子.我知道它会产生ruby进程来处理请求,但这不是Web服务器的责任吗?我已经阅读了Passenger文档的部分内容,但它仍然没有多大意义.我可以看到它说它使部署变得轻而易举,但这不是Capistrano的作用吗?
谁能给出更好的解释?非常感谢!
我正在使用Capistrano来部署我的Rails应用程序.每当我部署时,更改都不会反映在浏览器上,我仍然需要重新启动nginx来更新站点(运行sudo /etc/init.d/nginx restart).我不确定为什么但重启申请后不应该更新?(使用touch /app/tmp/restart.txt)
这是我的deploy.rb
require "rvm/capistrano"
set :rvm_ruby_string, 'ruby-1.9.3-p194@app_name'
set :rvm_type, :user
require "bundler/capistrano"
set :application, "app_name"
set :user, "me"
set :deploy_to, "/home/#{user}/#{application}"
set :deploy_via, :copy
set :use_sudo, false
set :scm, :git
set :repository, "~/Sites/#{application}/.git"
set :branch, "master"
role :web, '1.2.3.4'
role :app, '1.2.3.4'
role :db, '1.2.3.4', :primary => true
role :db, '1.2.3.4'
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do …Run Code Online (Sandbox Code Playgroud) 我一直在使用Devise来处理我的Rails应用程序上的身份验证,但从来没有真正理解它是如何工作的.因为Devise也使用Rails上的会话存储配置集,我假设这是一个关于使用Rails进行会话处理的问题.
基本上,我是一个新手.我已经阅读了一些关于身份验证的文章,但大多数都涉及对我来说没有多大意义的抽象库(他们谈论引擎,中间件等).我真的在寻找较低级别的细节.
这是我到目前为止所知道的......
我知道cookies和会话.Cookie是存储在客户端的字符串,用于跨多个HTTP请求维护会话.
这是我对身份验证的基本理解(如果我错了,请纠正我):
当用户登录时,我们将SSL加密的请求发送到服务器.如果凭证有效,我们会在数据库(或任何其他数据存储)上保存一个名为session id的随机字符串作为与用户ID关联的有效会话ID.此会话ID会针对用户的每次登录/注销而更改.
在我们的数据存储上保存该会话ID后,我们返回一个响应,要求浏览器设置具有会话ID的cookie.然后,会发送此会话ID以及用户ID,以便连续请求到域,直到它过期.对于每个请求,我们的服务器将检查标头上的会话ID,并验证该会话ID是否对该用户标识有效.如果是,则考虑用户进行身份验证.
这是我的问题:
我从默认情况下从Rails 2开始读到它,它现在使用CookieStore(而不是SessionStore),它使用SHA512(而不是会话ID)生成会话哈希,并且所有这些都存储在cookie中,这意味着多个用户ID可以真正拥有相同的会话哈希,它会正常工作.在我看来,这是一个非常危险的事情,使用存储在服务器上的单个密钥暴露大量哈希,并基于此密钥基于整个身份验证系统.是否存在使用散列而不是存储服务器端会话ID的真实世界大规模应用程序?
关于在服务器端存储活动会话ID的主题,我还读到您可以切换为Rails使用不同类型的会话存储.基于此,我听说系统将身份验证系统作为服务移动并使用auth令牌代替.什么是身份验证令牌,它与会话ID有什么不同?
好像我可以继续猜测一个随机字符串(用于散列和服务器端会话)来获取现有会话.有没有办法防止这种情况发生?使用存储在cookie上的更多值是正常的吗?(例如用户名,真实姓名或甚至用于身份验证的其他哈希)
我知道我问了很多,但我相信这对像我这样不了解身份验证的人很有用,对于获得有关该主题的坚实基础非常有用.
我想让Gedit看起来像Textmate,并且也像它一样.我在网上阅读了很多教程,但找不到易于理解的指南.我正在使用Ubuntu 11.04,并希望将它用于Ruby on Rails和其他Web语言.我只想要核心功能,如类/项目浏览器和语法高亮.有人可以提供一个易于遵循的指南或指向我正确的方向?非常感谢提前!
我已经安装了RVM以及ruby版本.但是,如果我启动控制台并运行命令rails服务器,捆绑安装等,我收到此错误
bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但如果我先跑rvm use 1.9.2,那一切都没问题.我尝试使用`rvm use --default 1.9.2',但没有改变.这是否意味着它使用与RVM中不同的ruby?提前致谢!
capistrano ×2
nginx ×2
passenger ×2
ruby ×2
rvm ×2
apt-get ×1
bundler ×1
cookies ×1
devise ×1
dialog ×1
duck-typing ×1
gedit ×1
gem ×1
gemset ×1
jasmine ×1
javascript ×1
jquery ×1
jquery-ui ×1
oop ×1
polymorphism ×1
rspec ×1
rspec-rails ×1
rspec2 ×1
rubygems ×1
session ×1
spy ×1
textmate ×1
ubuntu ×1