类似于此处描述的问题:http://rpheath.com/posts/411-how-to-use-factory-girl-with-rspec简而言之(缩短的代码):规范助手:config.use_transactional_fixtures=trueconfig.use_instantiated_fixtures=false工厂.rb:Factory.define:statedof.name"NY"end在我的规范中before(:each)do@static_model=Factory(:state)#withvalidateuniquenessofstatenameend错
让单个构造函数返回适当类型的对象的最巧妙、最像Ruby的方法是什么?更具体地说,这是一个虚拟示例:假设我有两个类Bike和Car,它们是Vehicle的子类。我想要这个:Vehicle.new('mountainbike')#returnsBike.new('mountainbike')Vehicle.new('ferrari')#returnsCar.new('ferrari')我在下面提出了一个解决方案,但它使用了allocate,这似乎实现过于繁重。还有哪些其他方法,或者我的方法真的可以吗? 最佳答案 如果我创建了一个未调用1
最近我从fixtures切换到factory_girl来测试我的RubyonRails应用程序。如果我运行raketest:units,在我的/units目录中运行测试,它们都运行完美。如果我使用raketest:functionals运行我的功能测试(在我的/functional目录中),情况也是如此。但是,如果我简单地运行rake测试,同时运行我的单元测试和功能测试,我的验证在第二组测试(在这种情况下是功能测试)上失败,并显示消息“验证失败:名称已经被拍了。”我认为这是由于功能测试创建的对象具有与单元测试中创建的对象相同的参数——这让我相信测试数据库在单元测试和功能测试之间没有被清
情况#ModelsclassUser:user)do|u|u.items{|items|[items.association(:item),items.association(:item)]}endFactory.define(:item)do|i|i.color"red"endFactory.define(:item_with_user,:parent=>:user)do|i|i.association(:user)end问题如果您运行@user=Factory(:user_with_items),则@user.items包含这两个项目。问题是这些项目未与数据库中的用户相关联。如果你
我认为我的用户工厂正在构建时出现问题。我收到一条错误消息,提示密码不能为空,但它在我的factories.rb中明确设置。有人看到我可能遗漏的任何东西吗?或者规范失败的原因?我为我的其他模型之一做了非常相似的事情,而且似乎成功了。我不确定错误是否是由设计引起的。Rspec错误UsershouldcreateanewinstanceofausergivenvalidattributesFailure/Error:User.create!(@user.attributes)ActiveRecord::RecordInvalid:Validationfailed:Passwordcan'tb
我正在寻求使我的Rails测试更快。我只有520个测试,但它们在bash中运行需要62秒,在Rubymine中运行需要82秒。作为典型Controller测试的示例,我使用此代码以@user身份登录并在CommentsController中为我的RSpecController测试创建基本的@comment:before(:each)do@user=Factory.create(:user)sign_in@user@comment=Factory.create(:comment)end您可能会意识到...这很慢。它构建了一个@user,但也为该用户构建了关联。@comment也是如此。所
几乎我遇到的每一个规范文件我最终都会写这样的东西:before:eachdo@cimg=Factory.build:cimg_valid@cimg.stub(:validate_img).and_returntrue@cimg.stub(:validate_img_url).and_returntrue@cimg.stub(:save_images).and_returntrue@cimg.stub(:process_image).and_returntrue@cimg.stub(:img).and_returntrueend我的意思是,我从Factory.build获得的模型是完全有
前提是我有项目工厂Factory.define:projectdo|p|p.sequence(:title){|n|"project#{n}title"}p.sequence(:subtitle){|n|"project#{n}subtitle"}p.sequence(:image){|n|"../images/content/projects/#{n}.jpg"}p.sequence(:date){|n|n.weeks.ago.to_date}end我正在创建项目实例Factory.build:projectFactory.build:project此时,下次我执行Factory.b
我正在与factory_girl一起工作,但正在研究机械师gem。你能告诉我-迁移到机械师的利弊是什么?您是否比较过这些库? 最佳答案 Machinist实际上深受factory_girl启发,但因机械师的作者想要不同的语法而有所不同。此后,factory_girl添加了不同的语法层来模拟其他工厂库(包括机械师的“蓝图”语法)。换句话说,两者非常相似,只是默认语法不同。我个人使用factory_girl。 关于ruby-on-rails-机械师vsFactoryGirl-优缺点,我们在S
我正在使用一个Rails2.2项目来更新它。我正在用工厂(使用factory_girl)替换现有的固定装置,但遇到了一些问题。问题在于表示具有查找数据的表的模型。当我使用两个具有相同产品类型的产品创建购物车时,每个创建的产品都会重新创建相同的产品类型。此错误来自对ProductType模型的唯一验证。问题演示这是我创建购物车并将其分成几部分的单元测试的结果。我必须这样做才能解决这个问题。不过,这仍然说明了问题。我会解释。cart=Factory(:cart)cart.cart_items=[Factory(:cart_item,:cart=>cart,:product=>Factory