【问题标题】:How would I write test for following controller我将如何为以下控制器编写测试
【发布时间】:2012-12-25 07:36:12
【问题描述】:

我是 rspec 的新手,想知道如何为控制器的两个操作编写功能测试

class FeedbackFormsController < ApplicationController

  before_filter :authenticate_user!

 def new
  @feedback_form = FeedbackForm.new
  session[:return_to] = request.referer
 end

 def create
  feedback_form = FeedbackForm.new(params[:feedback_form])
  FeedbackMailer.new(feedback_form).deliver
  flash[:notice] = "Your feedback was submitted successfully."
  redirect_to session[:return_to]
 end

end

【问题讨论】:

  • 恐怕你的问题很模糊。我会从中创建至少 5 或 6 个 rspec 测试。请更具体。你读过 rspec 文档吗?您是否尝试过创建您的第一个 rspec 测试?
  • 是的,我经常写测试。但是,这些天我陷入了无法避免测试每一行代码的空白(我不知道这是正确的,但这使我的测试非常僵硬)。所以问了一个问题,看看专业的 ruby​​ 开发人员如何为上述代码编写测试。

标签: ruby rspec tdd bdd rspec2


【解决方案1】:

我认为你自己做可能是一种更好的学习体验,但我会让你开始使用一些伪代码。我会故意放宽我的语法。

require spec-helper

describe FeedbackFormsController

  before each 
    controller should receive :authenticate_user! and return true

  describe new
    it should assign a new feedback form
      get new
      assigns feedback_form should be a new Feedbackform

    it should call for the referer
      request should receive referer
      get new

    it should set session value
      request stub referer and return nonsense
      expect
        get new
      to change session return_to to nonsense

  describe create
    it should create a new Feebackform
      Feebackform should receive new with nonsense
      post create nonsense

    it should create a new Feebackmailer
      mock = mock_model Feedbackform
      Feedbackform stub new and return mock
      Feedbackmailer should receive new with mock
      post create nonsense

    it should deliver a message
      mock = mock_model FeedbackMailer
      Feedbackform stub new
      FeedbackMailer stub new and return mock
      mock should receive deliver
      post create nonsense

    it should redirect
      Feedbackform stub new
      Feedbackmailer stub new
      post create nonsense
      response should redirect to session[return to]

希望这能让你开始。

【讨论】:

    猜你喜欢
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多