如何将大 rspec 文件分成较小的部分
How to divide a big rspec file into smaller parts
因此,在我的项目中,我使用 cancancan 进行授权。对于写作能力规范,我们在 ability_spec.rb 中维护。从最近几年开始,文件大小已大大增加。现在它有大约 3000 行,我们面临的主要问题是我们无法一次性 运行 整个文件。如果我们尝试这样做,我们的系统就会冻结。为了解决这个问题,我想出了将文件分成多个文件的方法。因为,rspec 遵循命名约定,所以我有点困惑如何继续它。
class Ability
include CanCan::Ability
attr_accessor :feature_factory
def initialize(user, session = nil)
alias_action :read, :update, :to => :read_write
user ||= User.new # guest user (not logged in)
can :read, Abc
can :manage, :file
can :view, :login
if user.anonymous_user?
## a lot of abiities
end
if user.mum_user?
## a lot of abiities
end
if user.tsm_user?
## a lot of abiities
end
#Similarly we have a lot of roles and abilities
end
require 'spec_helper'
require "cancan/matchers"
describe Ability do
describe "#anonymous_user" do
## a lot of specs for testing
end
describe "#tsm_user" do
## a lot of specs for testing
end
describe "#mum_user" do
## a lot of specs for testing
end
# similarly for other user roles
end
技能文件路径 - app/models/ability.rb
能力说明文件路径 - spec/models/ability_spec.rb
所以,到目前为止,我试图在 spec/models 中创建一个 ability_folder,并且我根据各自文件中的角色划分了规范。如下所示
spec/models/ability/anonymous_user_spec.rb
require 'spec_helper'
require "cancan/matchers"
describe Ability do
describe "#anonymous_user" do
## a lot of specs for testing
end
end
spec/models/ability/tsm_user_spec.rb
require 'spec_helper'
require "cancan/matchers"
describe Ability do
describe "#tsm_user" do
## a lot of specs for testing
end
end
spec/models/ability/mum_user_spec.rb
require 'spec_helper'
require "cancan/matchers"
describe Ability do
describe "#mum_user" do
## a lot of specs for testing
end
end
当我尝试 运行 时,它没有给我任何错误,并且它在一秒钟内 运行。另外,我试图引入一个错误,但它并没有失败。所以,我的问题是
1) 文件很大时如何解决此类问题
2) 如果上述方法是正确的,那么为什么它对我不起作用
3) 如果我分割文件会有性能提升吗
- 拆分一个大的规范文件听起来是个好主意。它是
在巨大的规格文件中导航的噩梦。然而问题
转向维护多个规范文件(这可能仍然是
减少邪恶)。
- 据我所知,它对你不起作用,因为
测试数据库问题。你解决了对吧?
- 你可能会看到一个小
如果您 运行 并行规格,则性能会提高。代替
运行在 1 个线程中使用 1 个长规格,它将 运行 中的较小规格
平行线。如果你不 运行 它并行它不会给你任何
性能提升。
因此,在我的项目中,我使用 cancancan 进行授权。对于写作能力规范,我们在 ability_spec.rb 中维护。从最近几年开始,文件大小已大大增加。现在它有大约 3000 行,我们面临的主要问题是我们无法一次性 运行 整个文件。如果我们尝试这样做,我们的系统就会冻结。为了解决这个问题,我想出了将文件分成多个文件的方法。因为,rspec 遵循命名约定,所以我有点困惑如何继续它。
class Ability
include CanCan::Ability
attr_accessor :feature_factory
def initialize(user, session = nil)
alias_action :read, :update, :to => :read_write
user ||= User.new # guest user (not logged in)
can :read, Abc
can :manage, :file
can :view, :login
if user.anonymous_user?
## a lot of abiities
end
if user.mum_user?
## a lot of abiities
end
if user.tsm_user?
## a lot of abiities
end
#Similarly we have a lot of roles and abilities
end
require 'spec_helper'
require "cancan/matchers"
describe Ability do
describe "#anonymous_user" do
## a lot of specs for testing
end
describe "#tsm_user" do
## a lot of specs for testing
end
describe "#mum_user" do
## a lot of specs for testing
end
# similarly for other user roles
end
技能文件路径 - app/models/ability.rb
能力说明文件路径 - spec/models/ability_spec.rb
所以,到目前为止,我试图在 spec/models 中创建一个 ability_folder,并且我根据各自文件中的角色划分了规范。如下所示
spec/models/ability/anonymous_user_spec.rb
require 'spec_helper'
require "cancan/matchers"
describe Ability do
describe "#anonymous_user" do
## a lot of specs for testing
end
end
spec/models/ability/tsm_user_spec.rb
require 'spec_helper'
require "cancan/matchers"
describe Ability do
describe "#tsm_user" do
## a lot of specs for testing
end
end
spec/models/ability/mum_user_spec.rb
require 'spec_helper'
require "cancan/matchers"
describe Ability do
describe "#mum_user" do
## a lot of specs for testing
end
end
当我尝试 运行 时,它没有给我任何错误,并且它在一秒钟内 运行。另外,我试图引入一个错误,但它并没有失败。所以,我的问题是
1) 文件很大时如何解决此类问题
2) 如果上述方法是正确的,那么为什么它对我不起作用
3) 如果我分割文件会有性能提升吗
- 拆分一个大的规范文件听起来是个好主意。它是 在巨大的规格文件中导航的噩梦。然而问题 转向维护多个规范文件(这可能仍然是 减少邪恶)。
- 据我所知,它对你不起作用,因为 测试数据库问题。你解决了对吧?
- 你可能会看到一个小 如果您 运行 并行规格,则性能会提高。代替 运行在 1 个线程中使用 1 个长规格,它将 运行 中的较小规格 平行线。如果你不 运行 它并行它不会给你任何 性能提升。