- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我要回去努力学习 TDD 测试了。我正在编写一个教程,该教程希望我创建将与主题相关联的 SponsoredPosts。
我是 TDD 测试的新手,所以遇到了一些小问题。
我还没有创建一个包含两个词“赞助”“帖子”的 Controller 或模型,所以我不确定处理它们时的协议(protocol),所以我将为你提供我认为相关的一切然后希望你能告诉我哪里出错了。我相信我只是混淆了模型和 Controller 的名称,因为正如您在我的模式文件中看到的那样,“sponsored_posts”表有一个“topic_id”属性。我承认,就知道如何处理模型或 Controller 而言,我不是最擅长命名模型或 Controller 的,因此您还可以提供任何解释以进一步帮助我理解我在命名它们时出错的地方,这将非常有帮助.
这是我的 Sponsored_Posts_Controller_Spec:
require 'rails_helper'
include RandomData
RSpec.describe SponsoredPostsController, type: :controller do
let (:my_topic) { Topic.create!(name: RandomData.random_sentence, description: RandomData.random_paragraph) }
let (:my_sponsored_post) { my_topic.sponsored_posts.create!(title: RandomData.random_sentence, body: RandomData.random_paragraph, price: 6) }
describe "GET show" do
it "returns http success" do
get :show, topic_id: my_topic.id, id: my_sponsored_post.id
expect(response).to have_http_status(:success)
end
it "renders the #show view" do
get :show, topic_id: my_topic.id, id: my_sponsored_post.id
expect(response).to render_template :show
end
it "assigns my_sponsored_post to @sponsored_post" do
get :show, topic_id: my_topic.id, id: my_sponsored_post.id
expect(assigns(:sponsored_posts)).to eq(my_sponsored_post)
end
end
end
这是我的 Sponsored_Post 模型规范:
require 'rails_helper'
include RandomData
RSpec.describe SponsoredPost, type: :model do
let(:topic) { Topic.create!(name: RandomData.random_sentence, description: RandomData.random_paragraph) }
let(:sponsored_post) { topic.sponsored_posts.create!(title: RandomData.random_sentence, body: RandomData.random_paragraph, price: 6) }
it { should belong_to(:topic) }
describe "attributes" do
it "should respond to title" do
expect(sponsored_posts).to respond_to(:title)
end
it "should respond to body" do
expect(sponsored_posts).to respond_to(:body)
end
it "should respond to price" do
expect(sponsored_posts).to respond_to(:price)
end
end
end
这是我的 SponsoredPosts Controller :
class SponsoredPostsController < ApplicationController
def show
@sponsored_post = Sponsored_post.find(params[:id])
end
def new
end
def edit
end
end
这是我的 SponsoredPost 模型:
class SponsoredPost < ActiveRecord::Base
belongs_to :topic
end
这是我的架构文件:
ActiveRecord::Schema.define(version: 20151102190350) do
create_table "advertisements", force: :cascade do |t|
t.string "title"
t.text "copy"
t.integer "price"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "comments", force: :cascade do |t|
t.text "body"
t.integer "post_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "comments", ["post_id"], name: "index_comments_on_post_id"
create_table "posts", force: :cascade do |t|
t.string "title"
t.text "body"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "topic_id"
end
add_index "posts", ["topic_id"], name: "index_posts_on_topic_id"
create_table "questions", force: :cascade do |t|
t.string "title"
t.text "body"
t.boolean "resolved"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "sponsored_posts", force: :cascade do |t|
t.string "title"
t.text "body"
t.integer "price"
t.integer "topic_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "sponsored_posts", ["topic_id"], name: "index_sponsored_posts_on_topic_id"
create_table "topics", force: :cascade do |t|
t.string "name"
t.boolean "public", default: true
t.text "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end
这是我为 SponsoredPost Controller 运行规范时的输出:
1) SponsoredPostsController GET show returns http success
Failure/Error: let (:my_sponsored_post) { my_topic.sponsored_posts.create!(title: RandomData.random_sentence, body: RandomData.random_paragraph, price: 6) }
ActiveRecord::UnknownAttributeError:
unknown attribute 'topic_id' for SponsoredPost.
2) SponsoredPostsController GET show renders the #show view
Failure/Error: let (:my_sponsored_post) { my_topic.sponsored_posts.create!(title: RandomData.random_sentence, body: RandomData.random_paragraph, price: 6) }
ActiveRecord::UnknownAttributeError:
unknown attribute 'topic_id' for SponsoredPost.
3) SponsoredPostsController GET show assigns my_sponsored_post to @sponsored_post
Failure/Error: let (:my_sponsored_post) { my_topic.sponsored_posts.create!(title: RandomData.random_sentence, body: RandomData.random_paragraph, price: 6) }
ActiveRecord::UnknownAttributeError:
unknown attribute 'topic_id' for SponsoredPost.
这是我运行模型规范时的输出:
1) SponsoredPost should belong to topic
Failure/Error: it { should belong_to(:topic) }
Expected SponsoredPost to have a belongs_to association called topic (SponsoredPost does not have a topic_id foreign key.)
# ./spec/models/sponsored_post_spec.rb:9:in `block (2 levels) in <top (required)>'
2) SponsoredPost attributes should respond to title
Failure/Error: expect(sponsored_posts).to respond_to(:title)
NameError:
undefined local variable or method `sponsored_posts' for #<RSpec::ExampleGroups::SponsoredPost::Attributes:0x007f992170a460>
# ./spec/models/sponsored_post_spec.rb:14:in `block (3 levels) in <top (required)>'
3) SponsoredPost attributes should respond to body
Failure/Error: expect(sponsored_posts).to respond_to(:body)
NameError:
undefined local variable or method `sponsored_posts' for #<RSpec::ExampleGroups::SponsoredPost::Attributes:0x007f9921701388>
# ./spec/models/sponsored_post_spec.rb:19:in `block (3 levels) in <top (required)>'
4) SponsoredPost attributes should respond to price
Failure/Error: expect(sponsored_posts).to respond_to(:price)
NameError:
undefined local variable or method `sponsored_posts' for #<RSpec::ExampleGroups::SponsoredPost::Attributes:0x007f99216f9ac0>
# ./spec/models/sponsored_post_spec.rb:23:in `block (3 levels) in <top (required)>'
最佳答案
这里有什么我可以给你的建议:
SponsoredPost
而不是 Sponsored_post
在您的 Controller 测试中, undefined variable sponsored_posts
,可能是:
SponsoredPost.create!(标题:RandomData.random_sentence,正文:RandomData.random_paragraph,价格:6,主题:my_topic)
在你的模型测试中,它似乎是同样的问题。
关于ruby-on-rails - Ruby on Rails - 测试时的 TDD 测试错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33506037/
我知道 TDD 有很多优点(其中一些在下面)。我怎么不确定它是如何驱动设计的? 作为文档 在实际代码之前编写测试有助于最大限度地提高测试覆盖率 帮助确定输入值边界 通常当我们开始实现新功能时,我们会对
我们的团队使用 TDD 进行开发,在实现新功能时,有时会在故事结束时所有卡片都变成绿色时出现“集成卡片”,这意味着将已实现的组件放在一起以相互配合。我对这张卡感觉很糟糕,因为这意味着,没有人在现实生活
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
我在浏览StackOverflow时遇到this题。这里作者提到了他/她的调试风格: I am wondering how to do debugging. At present the steps
我对 TDD 很陌生,我想到的第一个问题是我是否应该对每个开发的组件应用单元测试。我之所以这么问是因为我观察到单元测试需要很多时间,尤其是在对需求进行了一些更改时。那么,您能否提出一些类似于 TDD
假设您正在实现包含各种新功能并增加代码库复杂性的用户故事。现有代码已经很好地涵盖了,您刚刚决定了接口(interface)。您开始实现从测试开始的功能。 现在您有相当复杂的基于需求的测试用例,但实现远
我正在使用VS 2012,但这并不是很重要。 重要的是,我正在尝试通过首先编写所有测试然后创建代码来进行一些TDD。 但是,该应用程序将无法编译,因为我的对象或方法都不存在。 现在,在我看来,我应该能
我对单元测试和 TDD“相对较新”。直到最近,我才完成了我的第一个(至少在理论上)代码覆盖率为 100% 的生产应用程序。我在以前的项目中也做过一段时间的单元测试,但不是以真正的 TDD 方式和良好的
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 5年前关闭。 Improve this
我真的很想在我工作的车间内插入 TDD 开发。那里的很多前辈不从事单元测试工作,或者进行了会影响数据库的单元测试。 我很想带来一些好的论据、培训书籍、可能的教练来缓解过渡。 最佳答案 我发现通常很难从
请注意,我还没有在 TDD 上“看到曙光”,也没有真正理解为什么它的主要支持者宣扬了它的所有好处。我并没有否认它 - 我只是有我的保留意见,这可能是出于无知。所以无论如何都要笑下面的问题,只要你能纠正
我工作的所有项目都与一个硬件接口(interface),这通常是软件的主要目的。有什么有效的方法可以将 TDD 应用于与硬件一起工作的代码? 更新:对不起,我的问题没有更清楚。 我使用的硬件是从相机捕
我团队中的一位同事说,某些方法应该同时具有前提条件和后置条件。但重点是代码覆盖率,这些条件不会被调用(未测试),直到实现了无效的实现(仅在单元测试中使用)。让我们看下面的例子。 public inte
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 4年前关闭。 Improve this
我不明白下面的代码如何不遵守TDD FIRST principle。 这些是我关于FIRST原则的说明: Fast: run (subset of) tests quickly (since you'
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
在引用涉及 TDD 的项目/任务的估算时是否有任何指导方针? 例如,与正常开发需要 1 天才能完成的任务相比,TDD 驱动的任务需要多花多少时间?多出 50% 的时间还是多出 70% 的时间?假设开发
总结: 您在 TD 设计与开发中包含和/或交付了哪些模型和图表,为什么? 详细信息: 新的 4 位开发人员项目,在我们逐渐取得进展的商店中,让管理层在 TDD 采用/期望方面从“购买”升级到“行动”。
我的公司想在我们的项目中应用 TDD,我们 5 个月前开始研究 TDD。我们从编写单元到验收测试开始(您可以在 http://uet.vnu.edu.vn/~chauttm/TDD/ 中看到)。然后我
几周前,我开始了我的第一个 TDD 项目。到目前为止,我只读过一本关于它的书。 我主要关心的是:如何为复杂的方法/类编写测试。我写了一个计算二项分布的类。因此,该类的方法将 n、k 和 p 作为输入,
我是一名优秀的程序员,十分优秀!