无法将JSON传递给RSpec测试函数

时间:2014-10-25 02:00:06

标签: ruby-on-rails ruby json rspec

我正在尝试为登录函数编写测试代码,但测试代码给了我一个错误。我的rails代码只是一个API,并发送和接收JSON:

     NoMethodError:
         undefined method `[]' for nil:NilClass

以下是我要写的Rspec代码:

describe 'POST doctors/login' do
    it 'successfully logs a doctor in' do
      login_params = {
          "login"=>{
              "email" => "knkjn@aol.com",
              "password" => "123456"
          }
      }.to_json

      request_headers ={
          'Accept' => 'application/json',
          'Content_type' => 'application/json'
      }

      post 'login', login_params, request_headers
      expect(response.status).to eq 200
    end
end

以下是我的控制器的方法,我正在尝试为以下代码制作测试代码:

  def login
      response = Response.new
      this_doctor = Doctor.find_by_username(login_params["username"])
      if this_doctor && this_doctor.authenticate(login_params["password"])
          response.data = {:remember_token => this_doctor.sign_in}
          response.code = true
      else
          response.code = false
          response.error = "Invalid Login"
      end
      render :json => response.json
  end

以下是我接受来自params

的JSON请求的方法
def login_params
    return nil unless params["login"]
    params.require(:login).permit(:email, :password)

end

这是JSON请求(我已经使用DHC Chrome插件测试了POST请求的JSON请求,并且我已经验证了控制器中的登录功能正常运行。):

{
    "login": {
        "email": "walasif@gmail.com",
        "password": "123456"
    }
}

在JSON中为API编写测试代码时,我有什么特别之处吗?测试代码似乎没有正确地将params发送到我的控制器。

0 个答案:

没有答案