如何解决TestClass的Rspec范围问题Rails application_presenter_spec.rb act_as_attribute_spec.rb
当我分别运行每个rspec文件时,它们都会通过,当我一起运行它们时,它们会失败。
似乎我运行@application_presenter = described_class.new(TestClass.new,view_context)
时,它使用的是ActAsAttribute_spec.rb中的TestClass。
这似乎是一个范围界定的问题。我以为RSpec.describe是命名空间。处理此冲突的最佳方法是什么?我可以更改TestClass的名称,但是我更喜欢一种更好的方法,是确保我的类等在每个Rspec.describe
块中都具有名称空间。
application_presenter_spec.rb
# frozen_string_literal: true
require "rails_helper"
RSpec.describe ApplicationPresenter do
class TestClass
def checked_deligation?
true
end
end
class TestClassPresenter < ApplicationPresenter
def test_method; end
end
let(:view_context) { instance_double(ActionView::Base) }
before do
@application_presenter = described_class.new(TestClass.new,view_context)
end
act_as_attribute_spec.rb
# frozen_string_literal: true
require "rails_helper"
RSpec.describe Registration::Base::ActAsAttribute,type: :model do
class Examplemodel1
include ActiveModel::Model
include ActiveModel::Attributes
attribute :field1,:string,default: "field1_value"
end
class Examplemodel2
include ActiveModel::Model
include ActiveModel::Attributes
attribute :field2,default: "field2_value"
end
class TestClass
include ActiveModel::Model
include Registration::Base::ActAsAccessorsAndSave
include Registration::Base::ActAsAttribute
def self.form_fields_mapping
[
{name: :field1,model: :examplemodel1},{name: :field2,model: :examplemodel2}
]
end
setup_attributes
end
let(:examplemodel1) { Examplemodel1.new }
let(:examplemodel2) { Examplemodel2.new }
let(:instance_of_test) { TestClass.new }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。