我正在按照本教程开始使用工厂女孩的轨道上的TDD,rspec,我遇到了这个问题我无法理解.
这是我的"工厂".rb(events.rb)
require 'faker'
FactoryGirl.define do
factory :event do
name "HIGH"
genre "house, techno, idb"
venue_name "Westbourne Studios"
venue_address "4-6 Chamberlayne Road"
venue_postcode "NW103JD"
begin_time "10pm"
end_time "2am"
user_id 2
description "A Super massive party with loads of everything you would want around."
status true
venue_id nil
end
end
Run Code Online (Sandbox Code Playgroud)
这是event_spec.rb:
require 'spec_helper'
require 'factory_girl_rails'
describe Event do
it "has a valid factory" do
Factory.create(:event).should be_valid
end
it "is invalid without a name"
it "is invalid without a genre" …Run Code Online (Sandbox Code Playgroud) 我的模型如下:
class Project < ActiveRecord::Base
has_many :project_images
accepts_nested_attributes_for :project_images
end
class ProjectImage < ActiveRecord::Base
belongs_to :project
mount_uploader :image, ImageUploader
end
Run Code Online (Sandbox Code Playgroud)
这是activeadmin文件:
ActiveAdmin.register Project do
remove_filter :projects_sectors
permit_params :title, :info, :case_study, project_images_attributes: [:image, :cover]
index do
column :title
actions
end
form :html => { :enctype => "multipart/form-data" } do |f|
f.inputs "Project" do
f.input :title
f.input :info
f.input :case_study, :as => :file
end
f.inputs "Images" do
f.has_many :project_images, :allow_destroy => true, :heading => false, :new_record => true do |img_f|
img_f.input :image, …Run Code Online (Sandbox Code Playgroud) 我一直试图找出为什么这不起作用.如果有人可以帮助我,我将不胜感激!
function Person(name, age) {
this.name = name;
this.age = age;
var ageInTenYears = age + 10;
this.sayNameAndAge = function() {
console.log(name + age);
}
}
Person.prototype.sayAge = function() {
console.log(this.age);
}
Person.prototype = {
sayName : function(){
console.log(this.name);
},
sayNameAfterTimeOut : function(time) {
setTimeout(this.sayName, time);
},
sayAgeInTenYears : function() {
console.log(ageInTenYears);
}
}
var bob = new Person('bob', 30);
bob.sayName();
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Uncaught TypeError: Object #<Object> has no method 'sayAge'
Run Code Online (Sandbox Code Playgroud) 我一直在努力奋斗几个小时,我无法在任何地方找到答案.
基本上我正在使用shoulda为我的模型编写规范,并且由于某种原因即使我的let工作正常并且实际应用程序工作正常(手动确认并使用请求规范),如果我包括:
it { expect(user).to validate_uniqueness_of :email }
Run Code Online (Sandbox Code Playgroud)
在我的describe块中,我将收到以下错误:
1) User attributes should require case sensitive unique value for email
Failure/Error: it { expect(user).to validate_uniqueness_of :email }
RuntimeError:
Password digest missing on new record
# ./spec/models/user_spec.rb:14:in `block (3 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)
我已经到了解决这个规范的问题让我退缩,这从来都不是一件好事,因为实施已经有效.
如果有人可以帮助我在这里会很棒,因为我真的不想开始跳过那些因为某些模糊的原因而失败的测试.
我觉得好像rspec'忽略'调用has_secure_password来保存摘要的before方法,但我不确定.我只是假设,因为如果请求规范工作正常,这是做我不知道的事情.
我正在使用rails 4.0.0
以下是相关的代码.我感谢任何帮助.谢谢
user_spec.rb
require 'spec_helper'
describe User do
let(:user) {
user = User.new(:email => 'example@example.com',
:username => 'theo',
:password => 'secretpass',
:password_confirmation => 'secretpass')}
describe "attributes" do
it { expect(user).to validate_presence_of :email }
it …Run Code Online (Sandbox Code Playgroud)