我是新来的RSpec的,我敢肯定有一个更简单的方法做我想做的模型:导轨 - 测试使用从复制
我想测试我的车型之一 - “UserStatuses。 RB”。 每个测试都在一个事务中运行。 所以我定义:
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
我写的测试后,右侧的 '前'(里面的描述):
it "Get items"
res = UserStatuses.func()
expect(res.length).to eq(1)
end
...
end
UserStatuses中的func方法是:
def func
return using(:slave).connection.select_rows("SELECT id FROM user_statuses")
end
当我运行测试时,它失败。 从我看到的 - 从func返回的行,与之前在'before'部分中删除它们之前的数据相同。 但是当我在use_transactional_fixtures = false的时候运行测试,它会起作用('before'中的数据被保存并且以func的形式返回)。
我的猜测是,在事务模式 - user_status.save发生在'before'之前,它提交给DB,也提交给slave。因此,'之前'中所做的任何更改都适用于从属设备,并且func会返回所需的内容。 但我不确定。
有什么办法可以将更改应用于从属?
不知道是否在您的文章或代码一个错字,但你'except',而不是'expect' –
@PaulFrench错字在我的代码,谢谢! 但我仍然有问题。 B.T.W, 使用(:奴隶)是从章鱼宝石。 – McMendel