【发布时间】:2017-03-24 23:10:37
【问题描述】:
我在为我所做的事情设置规范时遇到了麻烦。我知道它正在按照我想要的方式工作,因为我已经手动测试了它,但我知道我是否仍然想要与之关联的规范。
我有一个球员索引,我也有一部分球队可以分配优先球员。通过进行分配,他们从生成索引的初始控制器中提取。
对于团队部分,我只有一个 ajax 调用,我在其中传递参数
ajax:
url: "#{admin_players_path(disabled: 'false')}"
dataType: 'json'
这里是控制器,我有一个条件来说明来自团队页面的请求。
def index
@q = @player.search(params[:q])
if params[:disabled] == 'false'
@player = @q.result(distinct: true).enabled
else
@player = @q.result(distinct: true)
end
end
这基本上就是我在应用程序方面所做的所有事情,而且效果很好。如果我询问正常索引中的玩家,它会向我显示禁用和启用的玩家,如果我希望分配优先玩家,它只会显示启用的玩家。
我的问题与我的规范有关,因为我无法正确设置以解决参数更改。
context "with a prioritized player set up" do
let(:params) { { disabled: false } }
let!(:player1) { create(:player, disabled: true, disabled_at: Time.current) }
let!(:player2) { create(:player) }
it 'returns only enabled players' do
get :index, params: params
expect(assigns[:player]).to_not include(player1)
end
end
无论我如何尝试设置我的规范,我都无法以我想要的方式获得正确的条件,并且不断让规范失败。有人知道我缺少这个吗?
【问题讨论】:
-
您能否发布失败的规范输出,因为如果没有失败的规范产生的错误消息就很难调试?
-
这对我来说有点棘手,但我确实得到了
Failure/Error: expect(assigns[:players]).to_not include(player1),这告诉我我没有正确设置规范。具体来说,我正在努力的是测试我在规范中的条件的另一面。 ` if params[:disabled] == 'false' @player = @q.result(distinct: true).enabled` 绝对无法正确设置控制器的该部分。
标签: ruby-on-rails ruby rspec