首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rspec Stub获取模型

Rspec Stub获取模型
EN

Stack Overflow用户
提问于 2014-06-22 02:55:34
回答 2查看 117关注 0票数 1

如何在控制器中获取模型的存根?

示例:

代码语言:javascript
复制
# Model Spec
it 'does something' do
  allow(model).to receive(:value).and_return 100
  model2 = FactoryGirl.create :model
  allow(model2).to receive(:value).and_return 99
  # next line fails because it returns 100. when fetched, model2.value = 0
  expect(model.subtract_last_model).to eq 1
end

# Model
def subtract_last_model
 value - Model.last.value
end

我需要能够存根model2,又名Model.last来返回99。

当然,我可以编写以下代码,然后编写一个规范,看看是否用正确的参数调用了它,但我很好奇是否还有其他方法:

代码语言:javascript
复制
def subtract_model(model)
  value - model.value
end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-22 03:00:34

很简单,只是存根Modelmodel2

代码语言:javascript
复制
it 'does something' do
  allow(model).to receive(:value).and_return 100
  model2 = FactoryGirl.create :model

  #  stub Model
  allow(Model).to receive(:last).and_return model2
  allow(model2).to receive(:value).and_return 99

  # next line fails because it returns 100. when fetched, model2.value = 0
  expect(model.subtract_last_model).to eq 1
end
票数 1
EN

Stack Overflow用户

发布于 2014-06-22 03:00:27

Model.last不返回带存根的model2,而是从数据库重新加载model2的非存根版本。因此:

代码语言:javascript
复制
it 'does something' do
  allow(model).to receive(:value).and_return 100
  model2 = FactoryGirl.create :model
  allow(model2).to receive(:value).and_return 99

  allow(Model).to receive(:last).and_return(model2)

  expect(model.subtract_last_model).to eq 1
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24347731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档