首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rspec进行模型测试

使用rspec进行模型测试
EN

Stack Overflow用户
提问于 2010-12-24 15:15:51
回答 6查看 4.3K关注 0票数 5

我有一段代码要测试:

代码语言:javascript
复制
class User < ActiveRecord::Base

 has_many :servers, :dependent=> :destroy

end

请给出一个测试关联代码的RSpec代码示例。

EN

回答 6

Stack Overflow用户

发布于 2012-06-15 22:42:25

对我来说,这个变体工作得很好:

代码语言:javascript
复制
describe User do
  it { should have_many(:servers).dependent(:destroy) }
end
票数 8
EN

Stack Overflow用户

发布于 2011-12-06 20:27:06

虽然回答你当前的问题可能会对你有所帮助,但你真正需要的是理解测试。

您希望为已经存在的一段代码编写一个测试。使用TDD方法,您将做相反的事情:首先编写测试,然后编写使测试通过的代码。

我建议你买RSpec的书,由务实的程序员写的。它将非常清楚地解释你应该做什么以及如何做。非常好的书,物有所值。

另一个答案是你应该使用Shoulda。虽然这是一个很好的做法,但请先尝试自己做。一旦你明白了你应该做什么,你就可以使用像Shoulda这样的抽象了。

另一个答案是使用工厂。虽然这是一个很好的实践,但我建议您首先使用RSpec内置工具,如模拟对象和存根方法。一旦你理解了这两个元素是如何运作的,你就可以使用像工厂这样的抽象了。顺便说一句,制造更简单。

票数 4
EN

Stack Overflow用户

发布于 2011-12-06 20:11:02

这里我使用Factory girl:

代码语言:javascript
复制
it "should be destroyed when user is destroyed" do
  @user.servers << @server
  @user.destroy
  Server.all.should_not include(@server)
end

但您也可以在测试中创建一个新用户,如下所示:

代码语言:javascript
复制
it "should be destroyed when user is destroyed" do
  user = User.create(:name => "Julia")
  user.servers << Server.create(:server_name => "Julias server")
  user.destroy
  Server.all.should_not include("Julias server")
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4524836

复制
相关文章

相似问题

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