Search code examples
rspecrspec-rails

Rspec test doesn't work well


What I want to do

I want to examine if an action that includes some processes about changing databases of the controller works successfully.

errors

"no save" F

Failures:

1) BuysController check #new's behavior return done Failure/Error: expect(buy.trading_status).to eq("done")

   expected: "done"
        got: "pending"

   (compared using ==)
 # ./spec/controllers/buys_controller_spec.rb:27:in `block (3 levels) in <top (required)>'

Finished in 0.14739 seconds (files took 3.68 seconds to load) 1 example, 1 failure

Failed examples:

rspec ./spec/controllers/buys_controller_spec.rb:6 # BuysController check #new's behavior return done

code

require 'rails_helper'
include BuysHelper

 RSpec.describe BuysController, type: :controller do
      describe "check #new's behavior" do
       it "return done" do
        User.create(name:"hhhvv",email:"gggjggg@gmail.com")
       p User.find(1)
       Currency.create(name:"hello",user_id:1)
       Sell.create(
           id:1,
          user_id: 1,
         currency_id:1,
          amount:100,
          price:100,
         trading_status:"pending")
       buy = Buy.new(
           id:1,
           user_id: 1,
           currency_id:1,
           amount:100,
           price:100,
          trading_status:"pending"
          )
      if buy.save
          market_checker
       else
          p "no save"
        end
        expect(buy.trading_status).to eq("done")
     end
    end
 end

What I have tried

  rake db:test:prepare 
  rake db:migrate RAILS_ENV=test

Solution

  • You might also want to check for errors.

    expect(buy.errors).to be_empty