我在试这个
require 'rspec'
require 'selenium-webdriver'
RSpec.describe 'New test' do
before :each do
@driver = Selenium::WebDriver.for (:firefox)
end
after :all do
@driver.quit
end
it 'should signup and create a new user' do
p 'testing'
我是rspec的新手,我们正在为我们的应用程序使用rspec进行测试自动化。我有三个钩子,在每个rspec测试中都被重用。钩子调用一个启动模块,这些模块用于启动&登录到站点,以及一些其他可用的方法。
我已经创建了一个hooks.rb文件,并将这些钩子放在那里,并在rspec测试中调用它,但是现在我失去了调用与所需方法相关的实例变量的能力。我可以将变量全球化,但我读过这样做不是一个好主意。
有没有人对什么是最好的方法有洞察力?
我正在包括代码示例.
before(:all) do
< this before hook include making files availabl
我试图保持我的规范干净和干燥,但我有一些API的测试,除了正在测试的API的版本之外,这些测试都是相同的。我可以简单地使用下面的内容来重复这些规范:
%w( v1 v2 ).each do |version|
describe "Query #{version} API" do
it "responds with JSON"
# make the call using the version
end
end
end
但是我想要一些更干净的东西,所以我写了这个方法:
module RepetitivelyDescribe
我有一个做三项不同任务的功能,效果很好。为了获得更好的可重用性,我尝试将它们分成三个独立的挂钩。它们看起来是这样的:
module.exports = function(options = {}) {
return function hookFunction(hook) {
//do stuff and set variables
function(hook.params.var){ ... } // only in second and third
hook.params.var = var; // only in first and second
我看到了如何在RSpec中设置全局HTTP_REFERER的各种版本,但它们都不适用于RSpec 2.6.4:
RSpec.configure do |config|
config.before(:each, :type => :controller) do
request.env["HTTP_REFERER"] = root_url
end
end
请求始终为空:
undefined method `env' for nil:NilClass
RSpec这样说:
def self.eval_before_eachs(example)
worl
在升级到Rails 3.2.6或Rspec 2.11.0之后,我的规范开始显示路由错误,如下所示:
4) UsersController GET activate activation code not exist
Failure/Error: subject{ get :activate }
ActionController::RoutingError:
No route matches {:controller=>"users", :action=>"activate"}
此外,还会出现after each
我从RSpec读到了这段代码:
require 'rspec/expectations'
RSpec::Matchers.define :be_a_multiple_of do |expected|
match do |actual|
actual % expected == 0
end
end
RSpec.describe 9 do
it { is_expected.to be_a_multiple_of(3) }
end
match do块是什么?在道具里有个街区吗?语法有点奇怪..。define方法是否带有两个参数:第一个是符号,第二个是Proc?
我使用的是RSpec 2.99,并具有以下简单的规范文件:
describe 'thing' do
context 'context' do
it 'one thing' do
# ...
end
it 'another thing' do
# ...
end
end
it 'without context' do
# ...
end
end
产出如下:
$ bundle exec rspec test_spec.rb -fd
这是我spec_helper.rb的一部分
RSpec.configure do |config|
config.before(:each) do
login(email, password)
visit root_url
end
end
在我所有的(20+)测试中,除了一个测试之外,我都需要它。
有没有办法避免使用单一测试来执行before hook?
我正在努力将我的项目的测试套件迁移到rspec。在试图访问我的设备时,我得到了以下错误:
零的未定义方法‘[]:NilClass
下面是一个示例规范文件:
require 'rails_helper'
feature "edit contacts" do
fixtures :contacts
before(:all) do
@thing = contacts(:two)
end
scenario "do a thing" do
visit new_contact_path
end
end
在调用b
我使用自制软件安装postgres,运行良好--但现在rspec不运行我的测试,并抛出了这个错误:
Could not find pg-0.16.0 in any of the sources (Bundler::GemNotFound)
我的“宝石档案”的相关部分
group :production do
gem 'pg'
end
group :development, :test do
gem 'sqlite3'
end
很明显,我想让它发挥作用,但老实说,我更困惑的是,为什么这首先会导致错误。Rspec在我的测试/开发环境中,postgres只在
当我的rails应用程序不使用postgres时,我不明白为什么会看到这个错误。对于如何解决这个问题,有什么建议吗?
c:\>rspec my_spec.rb
An error occurred in an after hook
NameError: undefined local variable or method `postgresql_version' for #<ActiveRecord::ConnectionAdapters::SQLite3Adapter:0x41284c8>
occurred at C:/Ruby193/lib/ruby/ge
在TestUnit上,您可以使用-n选项在文件中启动一个测试
例如
require 'test_helper'
class UserTest < ActiveSupport::TestCase
test "the truth" do
assert true
end
test "the truth 2" do
assert true
end
end
你只能执行真实的测试
ruby -Itest test/unit/user_test.rb -n test_the_truth
输出
1 tests, 1
我在rspec中有一个描述块,它看起来如下所示:
describe 'Trying to get this to work' do
object = Class.new('Old Value')
it "object.value should return #{object.value}" do
expect(object.value).to eq 'Old Value'
end
describe 'Try a before hook' do
before {
obj
我目前正在使用rspec和cancan。我意识到在我的控制器规范文件中到处都是权限控制测试用例,这是非常混乱的。基本上,我的几乎每个控制器规范文件都有类似的内容:
describe "failure" do
it { get :new }
it { get :edit, :id => @deal }
it { get :update, :id => @deal }
it { get :destroy, :id => @deal }
after(:each) do
response.should_not
我有两个站点(site1和site2)和两个组(group1和group2)。我在两个站点上都有Sign In Liferay的portlet。我想要的是,如果Sign In portlet在site1上注册用户,那么用户被分配给group1,如果用户寄存器由Sign In portlet在site2上分配,那么用户被分配给group2。
该怎么做呢?
===EDIT===
我试过用struts操作编写钩子,但它对我不起作用。
救生筏-hook.xml:
<hook>
<struts-action>
<struts-action-path&
F
An error occurred in an `around(:example)` hook
NoMethodError: undefined method `reset_all' for nil:NilClass
occurred at /usr/lib/ruby/vendor_ruby/rspec/mocks.rb:22:in `teardown'
我目前正在尝试运行ruby测试套件,但在调用rspec spec/时遇到了问题。我正在获取上面的回溯。有什么可能导致这种情况的想法吗?我已经尝试过更新rspec,但都没有用。
任何调试技巧都是非常有用的