我通常可以对方法“delete_user_test”使用以下命令行语法来测试常规Test::Unit方法:rubyfunctional/user_controller_test.rb-ndelete_user_test现在,当我将shoulda插件与Test::Unit一起使用时,我尝试使用如下相同的技术:...context"DeletingaUser"doshould"removeuserfromusertable"do...endend然后我尝试按如下方式运行单个测试:rubyfunctional/user_controller_test.rb-n"test:DeletingaU
使用Test::Unit和Shoulda。正在尝试测试Users.create。我的理解是Rails表单为这样的对象发送参数:user[email]哪个在你的操作中变成哈希,对吧?params[:user][:email]好的,所以在我的测试中我试过了......setup{post:create,:post=>{'user[email]'=>'invalid@abc'}}和setup{post:create,:post=>{:user=>{:email=>'abc@abcd'}}}在这两种情况下,在我的操作中,params[:user]都是nil。 最佳答
我正在使用Rspec测试我的ActiveRecord模型。我刚刚向我的验证之一添加了自定义错误消息,如下所示:validates:accepted_terms_at,:presence=>{:message=>'YoumustaccepttheTermsandConditionstousethissite.'}现在下面的测试失败了:it{shouldvalidate_presence_of(:accepted_terms_at)}...错误Expectederrorstoinclude"can'tbeblank"whenaccepted_terms_atissettonil。所以测试失
我正在设置一个Rails应用程序,我刚刚完成了一些单元测试,我的friend说显然固定装置不再酷,人们现在正在使用RSpec或shoulda。我想知道使用这些其他工具包的实际好处是什么。任何信息都将不胜感激。-fREW 最佳答案 与RSpec相比,我个人更喜欢Shoulda。我发现Shoulda的语法不如RSpec神奇。我对RSpec的问题是,是的,当我大声朗读它时它的可读性很强,但是当我开始编写它时,嗯,我永远不确定如何应该编写给定的断言。PragDaveexplainstheproblembetterthanme.他还likes
在我的代码中,我使用Shoulda匹配器进行了以下验证,效果很好:it{shouldvalidate_presence_of(:name)}在我的模型中,我已将条件添加到我的验证中:validates_presence_of:name,:if=>eligible?是否可以在验证中反射(reflect)出来?我试过查看documentation对于shoulda匹配器,但无法找到解决方案。非常感谢! 最佳答案 似乎shoulda_matchers不会这样做,但自己写起来很容易::context"ifeligible"dobefore{
背景:我在使用Thoughtbot的“工厂女孩”gem时遇到了一些问题,该gem用于创建要在单元测试和其他测试中使用的对象。我想转到控制台并运行不同的FactoryGirl调用以检查发生了什么。例如,我想去那里做...>>Factory(:user).inspect我知道您可以在不同的环境中运行控制台...$脚本/控制台RAILS_ENV=test但是当我这样做时,工厂类不可用。看起来好像test_helper.rb没有加载。我尝试了各种require调用,包括一个带有到test_helper.rb的绝对路径的调用,但它们的失败与此类似:$script/consoleRAILS_ENV
我的avatar_parts_spec.rb中有一个shoulda匹配器,但我无法让它通过:测试:require'rails_helper'RSpec.describeAvatarPart,:type=>:modeldoit{shouldvalidate_presence_of(:name)}it{shouldvalidate_presence_of(:type)}it{shouldvalidate_uniqueness_of(:name).case_insensitive}it{shouldbelong_to(:avatar)}end型号:classAvatarPart迁移:clas
这是我在RSpec中使用的一个很好的技术,我也想在使用Shoulda和Shoulda-context的项目中使用它。但我不知道这是否可能。有办法做到这一点吗?我想要的:在引用嵌套上下文中的let子句的外部上下文中定义一个setup(before)block。这样,内部上下文可以配置在外部setup中引用的值,并且setup仍然可以在内部上下文中保持DRY。RSpec示例(这个示例很简单——请假设我的真实示例在beforeblock中有更多我不想重复的代码):describeThingdobeforedo#Noticethat`user`isn'tdefinedhere--it'sdef
我在类(class)中遇到以下属性问题。我也有一个在数据库级别强制执行的日期属性,存在为真:验证:date,presence:true除此之外,我需要为以下两个属性强制组合唯一性validates:name,uniqueness:{scope::parent_id}到目前为止...一切正常,但我想要一个测试唯一性的规范它{应该validate_uniqueness_of(:name).scoped_to(:parent_id)}但是上面一行的问题是它会尝试通过使用随机名称和parent_id值在数据库中插入一条记录,让日期一为零。因此,它在数据库上失败。我已经尝试在测试中执行subje
我有一堆非常重复的rspec测试,它们都具有相同的格式:it"insertsthecorrectATTRIBUTE_NAME"do@o.ATTRIBUTE_NAME.shouldeql(VALUE)end如果我能像这样进行一行测试就好了:compare_value(ATTRIBUTE_NAME,VALUE)但是shoulda似乎并不适合这些类型的测试。还有其他选择吗? 最佳答案 有时我后悔将subject暴露为最终用户设备。引入它是为了支持扩展(如shoulda匹配器),因此您可以编写如下示例:it{shoulddo_somethi