我想在我的网站上加上一张污秽的支票。
我正在采取TD方法,我正在尝试以下几点:
到目前为止,这是我的规范:
describe Painter do
before do
@painter = FactoryGirl.create(:painter_flag)
end
context "blacklist flag" do
it "check if profanity exists" do
@painter.experience = "test"
@painter.save
expect {@painter.blacklist_flags?}.to be_true
end
it "create flag if profanity exists" do
@painter.experience = "test"
@painter.save
BlacklistFlag.count.should be > 0
end
end
end与画家有关的代码:
after_save :create_flag, if: :blacklist_flags?
def blacklist_flags?
list = ""
list << skills
#list << experience
#list << first_name
#list << last_name
#list.downcase.scan(/(badword|badword)/).size > 0
end
def create_flag
end如果我注释掉下面的代码,下面是两个测试通过的代码:
list << skills当我把代码留在里面时,我会收到以下错误:
2)如果亵渎行为存在失败/错误,则绘制黑名单标志创建标志:@painter = FactoryGirl.create(:painter_flag) TypeError:无法将0转换为字符串
因为技能、经验等都是模型的一部分,所以引用自我似乎有问题。我不知道怎么解决这个问题。请给我建议。
更新:
FactoryGirl.define do
factory :painter do
first_name "Brian"
last_name "Rosedale"
state "OH"
zip_code "43081"
sequence(:email) {|n| "nobody#{n}@painterprofessions.com" }
phone "12345566"
pdca_member false
password "123456"
factory :painter_flag do
skills = "badword"
end
end
end发布于 2013-09-26 03:08:54
只需在工厂中为:painter_flag使用这一行,而不使用=标志。
skills "badword"发布于 2013-09-26 01:34:00
我认为导致错误的原因是回调是在行@painter = FactoryGirl.create(:painter_flag)上执行的。
如果要测试回调,可能需要使用FactoryGirl.build方法。
https://stackoverflow.com/questions/19017757
复制相似问题