- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
跟随 Ben Walker 的(惊人的)Let's Build Instagram With Rails ,特别是 BDD 版本。教程使用 FactoryGirl。我在多次测试中遇到以下错误:
精简版
Failure/Error: post = create( :post, user_id = user.id )<br>
ArgumentError:<br>
Trait not registered: 1
我什至无法让 Ben 用 clone of my repo 重新创建错误,我在 Stack Overflow 的“特征未注册”问题中找不到任何内容。
这是我的第一个 SO 问题,所以如果我在那个前面做错了什么,请告诉我。在此先感谢您的帮助!
代码选择:
spec/factories.rb
FactoryGirl.define do
factory :post do
caption "nofilter"
image Rack::Test::UploadedFile.new(Rails.root + 'spec/files/images/coffee.jpg', 'image/jpg')
user_id 1
end
factory :user do
email 'fancyfrank@gmail.com'
user_name 'Arnie'
password 'illbeback'
id 1
end
end
spec/features/viewing_posts_spec.rb
require 'spec_helper'
feature 'viewing individual posts' do
background do
user = create :user
post = create( :post, user_id = user.id )
sign_in_with user
end
scenario 'can click and view a post' do
post = create(:post)
visit '/'
find(:xpath, "//a[contains(@href,'posts/2')]").click
expect(page.current_path).to eq(post_path(post))
end
end
app/models/post.rb
class Post < ActiveRecord::Base
belongs_to :user
validates :user_id, presence: true
validates :image, presence: true
has_attached_file :image, styles: { :medium => "640x" }
validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
end
app/models/user.rb
class User < ActiveRecord::Base
validates :user_name, presence: true, length: { minimum: 4, maximum: 16 }
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :posts, dependent: :destroy
end
app/controllers/posts_controller.rb
class PostsController < ApplicationController
before_action :authenticate_user!
def index
@posts = Post.all
end
def new
@post = current_user.posts.build
end
def create
@post = current_user.posts.build(post_params)
if @post.save
flash[:success] = 'Your post has been created.'
redirect_to posts_path
else
flash[:alert] = 'Halt, you fiend! You need an image to post here!'
render :new
end
end
def show
@post = Post.find(params[:id])
end
def edit
@post = Post.find(params[:id])
end
def update
@post = Post.find(params[:id])
if @post.update(post_params)
flash[:success] = 'Post updated hombre.'
redirect_to root_path
else
flash[:alert] = 'Something is wrong with your form!'
redirect_to root_path
end
end
def destroy
@post = Post.find(params[:id])
@post.destroy
flash[:success] = 'Problem solved! Post deleted.'
redirect_to root_path
end
private
def post_params
params.require(:post).permit(:caption, :image)
end
end
完全错误(其中之一)
viewing individual posts can click and view a post
Failure/Error: post = create( :post, user_id = user.id )
ArgumentError:
Trait not registered: 1
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/registry.rb:24:in `find'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/decorator.rb:10:in `method_missing'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl.rb:98:in `trait_by_name'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/definition.rb:113:in `trait_by_name'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/definition.rb:109:in `block in additional_traits'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/definition.rb:109:in `map'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/definition.rb:109:in `additional_traits'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/definition.rb:135:in `block in aggregate_from_traits_and_self'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/definition.rb:128:in `tap'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/definition.rb:128:in `aggregate_from_traits_and_self'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/definition.rb:33:in `to_create'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/definition_hierarchy.rb:16:in `build_from_definition'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/factory.rb:124:in `build_hierarchy'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/factory.rb:87:in `compile'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/factory.rb:32:in `run'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/factory_runner.rb:23:in `block in run'
# /var/lib/gems/2.1.0/gems/activesupport-4.2.0/lib/active_support/notifications.rb:166:in `instrument'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/factory_runner.rb:22:in `run'
# /var/lib/gems/2.1.0/gems/factory_girl-4.5.0/lib/factory_girl/strategy_syntax_method_registrar.rb:20:in `block in define_singular_strategy_method'
# ./spec/features/viewing_posts_spec.rb:6:in `block (2 levels) in <top (required)>'
最佳答案
修改您的工厂以使用关联
。
FactoryGirl.define do
factory :post do
caption "nofilter"
image Rack::Test::UploadedFile.new(Rails.root + 'spec/files/images/coffee.jpg', 'image/jpg')
association user
end
factory :user do
email 'fancyfrank@gmail.com'
user_name 'Arnie'
password 'illbeback'
sequence(:id) { |id| id }
end
end
然后,创建用户并像这样发帖:
user = create :user
post = create(:post, user: user)
这应该有效。
查看更多关于 factory_girl associations 的信息.
关于ruby-on-rails - 工厂女孩/Rspec - "Trait Not Registered"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32172334/
我正在更新a boilerplate中使用的babel包,从 babel-core、babel-register 等到@babel/core、@babel/register > 等 问题:在 npm
为了在 Babel 中进行运行时转换,您需要 require 并使用 babel-core/register。我不知道 register 在这个意义上意味着什么,即实际的定义。 The page is
我们可以使用“babel-register”即时转换源代码 https://babeljs.io/docs/usage/require/ 但我无法验证要使用哪一个: require('babel-co
我有一个用 RAL 建模的大寄存器映射,我想随机化一些寄存器。如果我想单独限制寄存器,那么这很简单: reg_model.register_a.randomize() with {value > 5;
我正在尝试制作一个使用 django 内置用户模型的简单应用程序。我已经创建了一个注册页面,但是当我运行服务器时,我在索引页面上收到此错误。这是我正在使用的代码: 注册.html {% extend
我正在尝试制作一个使用 django 内置用户模型的简单应用程序。我已经创建了一个注册页面,但是当我运行服务器时,我在索引页面上收到此错误。这是我正在使用的代码: 注册.html {% extend
在下面的应用程序中,我尝试将 id 动态添加到生成的项目中。我的代码工作正常,但是当我在其中添加以下两行注释时。它抛出错误 Uncaught Ext.AbstractManager.register(
当我尝试运行 SignUpFragmentTest 类时,出现错误“未注册检测!必须在注册检测下运行”。我认为当我使用@Rule 时会抛出错误。 import android.support.test
到目前为止,我目前的理解是:movq %rdi, %rax 将值从寄存器 %rdi 移动到寄存器 %rax 和movq (%rdi), %rax 会将内存中的值从(%rdi) 移动到寄存器%rax 但
我做了一个common view,所有页面都需要这个view。所以无论我需要什么,我都将这个 View 称为 xtype 。在这个公共(public) View 中,有一些组件由 id 值定义。 根据
app.get("/register", function(req, res) { res.render("register"); }); app.get("register", function(r
我目前正在开发我的个人网站 和我的网站的一部分,我有偏见的公关,以避免重复的代码... 这个 View 我有一个dojox.grid.datagrid ... 我可以在同一页面中两次调用此 View
调试版本对我来说工作正常。当我选择Active Build Variant = release,并尝试运行Build-> Generate Bundle(s)/ APK(s)-> Build APK时
我创建了一个异步函数如下: let createUserWrapper = async function(user){ await Log.createUser(use
我在 Dojo 的内容 Pane 中遇到问题,它出现一秒钟,然后内容消失。我收到以下错误: Uncaught ReferenceError: dijit is not defined index.p
我正在尝试在前端使用 React 创建一个注册表单,并在后端使用 Typescript 创建 Express 和 MongoDB atlas。当我单击提交按钮时,没有任何反应,但是当我使用 Postm
我已经使用 graph ql(具有非常基本的模式)创建了一个 Node js 项目,但是当我在为 graphql 和 graphiql 注册插件后尝试启动服务器时,我收到注册丢失错误。下面是我的代码
我的计算机体系结构书籍解释说 "Since writes to the register file are edge-triggered, our design can legally read an
我有一个 Google Pub/Sub 项目并创建了一个主题和一个简单的订阅。 但是,在指定用于推送的 URL 时,我不断收到以下错误。我已经完成了站点验证过程并在 API 和服务中注册了域,如 ht
您好,我在再次选择 DOJO 中的下拉菜单时遇到错误 function onReportTypesSelect() { if(
我是一名优秀的程序员,十分优秀!