Tag: rspec rails

如何用Rspec测试强对数?

使用Rspec在Rails控制器中测试强params过滤的实际策略是什么? (除了应该匹配)如何编写失败的测试然后使其变为绿色?

访问请求规范中的请求对象

如何在请求规范上执行请求之前设置请求标头? 我正在移动控制器规范以使用Rails在我的API上请求规范。 我坚持的一件事是我无法访问request对象以允许请求。 在我的控制器规格上,我可以访问我创建的一个签署特定用户的方法: def sign_in(user) token = user.api_keys.first.token # note the request object being used in the next line request.env[“HTTP_AUTHORIZATION”] = ActionController::HttpAuthentication::Token.encode_credentials(token) end 这在控制器规格上工作正常,我可以安全地做到: before { sign_in(user) } it { post :endpoint, params } 但是在请求规范中, request对象不可用。 如果我尝试: before { sign_in(user) } it { post “/api/endpoint”, params } 我的帮助方法request为nil 。 我知道我能做到: it { post “/api/endpoint”, […]

在rspec中模拟方法链

有一系列方法可以获取user对象。 我试图嘲笑以下内容以返回我的Factory Girl的user @current_user = AuthorizeApiRequest.call(request.headers).result 我可以模拟对象,直到call方法,但我坚持嘲笑result方法 allow(AuthorizeApiRequest).to receive(:call).and_return(:user)

将标头附加到Rspec控制器测试

我正在尝试为我的控制器编写测试,以接收来自外部服务的请求。 到目前为止,这是我的测试: describe ApplyController do context ‘when valid’ do let(:parameters) do file = File.join File.dirname(__FILE__), ‘..’, ‘samples’, ‘Indeed.json’ JSON.parse(File.read file) end let(:signature) { ‘GC02UVj0d4bqa5peNFHdPQAZ2BI=’ } subject(:response) { post :indeed, parameters, ‘X-Indeed-Signature’ => signature } it ‘returns 200 ok if Request is valid’ do expect(response.status).to eq 200 end end end 这应该根据我能找到的文档工作。 我的控制器现在看起来像这样: class ApplyController < Application […]

为什么即使我删除了application.js文件,Capypara + Rspect测试仍然通过?

我有rails应用程序,并在application.js文件中有一些ajax调用。 O有rspec,capybara,webkit,factorygirl和databasecleaner进行测试。 我写了所有通过的function测试。 然后不小心删除了application.js文件并运行测试,它们仍然通过。 请帮我找出原因。 非常感谢。 PS:如果你请问我的问题,请至少告诉我原因。 我一直在寻找答案但找不到答案。

RSpec中的相对文件路径

我对/lib/classes的类进行了RSpec测试,需要访问zip文件(无上传)。 该文件存储在/spec/fixtures/files/test.zip 。 如何输入正确的路径以使其与环境无关,即没有绝对路径?

使用rspec测试具有子域约束的​​路由

我无法让我的rspec路由测试使用子域约束。 具体来说,我有一条路线 constraints :subdomain => “api” do resources :sign_ups, :only => [:create] end 和(除其他外)测试 it “does allow creation of sign ups” do {:post => “/sign_ups”}.should route_to( :controller => “sign_ups”, :action => “create”, ) end 如果我删除了这个测试通过的子域约束,但是它会失败。 我必须告诉rspec使用子域名,但我不知道如何 TIA 安迪