【问题标题】:Updating in Rspec isn't working, although the status is 200尽管状态为 200,但 Rspec 中的更新不起作用
【发布时间】:2017-01-10 15:22:25
【问题描述】:

我正在尝试更新 Rspec 中的用户:

require "rails_helper"

RSpec.describe UsersController, type: :controller do
  describe "PUT #update" do
    it 'should update a user' do
        attr1 = { .............. }
        u1 = User.create!(attr1)
        put :update, { id: u1.to_param, user: attr1.merge({name: "name2", email: "email2@mail.com"}) }, format: :json
        u1.reload

        expect(response.status).to eq(200)
        expect(u1.name).to eq("name2")

状态为 200,但在正文中,返回的属性没有更新。

【问题讨论】:

  • 你的日志怎么说? log/test.log
  • 控制器返回 200 并没有告诉你什么。您可以拥有一个完全不执行任何操作但仍返回 200 的控制器。请包含被测的实际代码。
  • 当然是你的控制器。
  • @max 和这里的stackoverflow.com/questions/41568643/… 一样,但是要更新
  • 当被要求提供补充信息时,请将其添加到问题本身。不要指望愿意帮你挖掘的人,也不要让我们猜测......

标签: ruby-on-rails ruby rspec ruby-on-rails-5


【解决方案1】:

我不知道你的 attr 属性是什么,但试试这个:

describe "PUT #update" do
      let(:option) { assigns(:option) }

      before(:each) do
        attr1 = { .............. }
        u1 = create(:user, attr1....)
        put :update, params: {
          user: attributes_for(:user, name: "name2", email: "email2@mail.com"),
          id: u1.id
        }
      end

      it "should be success" do
        expect(response.status).to eq(200)
      end

      it "should update attributes" do
        expect(u1.name).to "name2"
      end
    end

【讨论】:

    猜你喜欢
    • 2021-09-11
    • 2022-01-22
    • 1970-01-01
    • 2015-12-05
    • 2019-08-06
    • 2014-12-18
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    相关资源
    最近更新 更多