Ruby on rails 4 Rails—测试使用从属复制的模型
我是RSpec的新手,我相信有一种更简单的方法来做我想做的事情: 我想测试我的一个模型——“userstatus.rb”。 每个测试在一个事务中运行。 所以我定义:Ruby on rails 4 Rails—测试使用从属复制的模型,ruby-on-rails-4,rspec,Ruby On Rails 4,Rspec,我是RSpec的新手,我相信有一种更简单的方法来做我想做的事情: 我想测试我的一个模型——“userstatus.rb”。 每个测试在一个事务中运行。 所以我定义: config.use_transactional_fixtures = true 我写了一些在每次测试之前运行的东西: describe "UsersStatuses" , type: :model, :focus => true do before(:each) do UsersStatuses.
config.use_transactional_fixtures = true
我写了一些在每次测试之前运行的东西:
describe "UsersStatuses" , type: :model, :focus => true do
before(:each) do
UsersStatuses.delete_all
user_status = UserStatus.new()
user_status.save
end
我在“之前”之后写了测试(在描述中):
UserStatus中的func方法是:
def func
return using(:slave).connection.select_rows("SELECT id FROM user_statuses")
end
当我运行测试时,它失败了。
据我所见,func返回的行与我在“before”部分中删除它们之前的数据相同。
但是,当我在use\u transactional\u fixtures=false时运行测试时,它可以工作(保存'before'中的数据,并在func中返回)
我的猜测是,在事务模式下,user_status.save发生在'before'中,它提交给DB,也提交给从属服务器。
因此,在“before”中所做的任何更改都将应用于从属,func将返回它所需的内容。
但我不确定
有什么方法可以将更改应用到slave上吗?据我所见,RSpec不能很好地与Shared(在八达通gem中)一起工作 我重写了Octopus::Model::SharedMethods下的“using”方法 因此,如果在我的代码中的任何一点我使用using(:slave),它将调用我的'using' 并且:奴隶碎片将被使用。所有“更改”都将在master中进行,并在测试结束时回滚 新功能:
module Octopus
module Model
module SharedMethods
def using(shard)
return self
end
end
end
end
不确定这是你的帖子还是你的代码中的拼写错误,但是你有
除了而不是期望@paul法语拼写错误,谢谢!但我还是有问题。B.T.W,使用(:从)是来自八达通宝石。
module Octopus
module Model
module SharedMethods
def using(shard)
return self
end
end
end
end