操作成功,但规范失败

时间:2019-02-05 19:23:36

标签: ruby-on-rails rspec

这是我通过复选框进行编辑操作的规范。 Preference有许多Regions(实际上是很多;关系正常),并且复选框应在首选项中添加或删除区域。

这是规格:

      it "saves updated regions when the button is clicked" do
        uncheck "preference_region_ids_#{afr.id}"
        check "preference_region_ids_#{asia.id}"
        click_button "Save"
        expect(pref.regions).to_not include afr
        expect(pref.regions).to include asia

        afr_box = page.all("#preference_region_ids_#{afr.id}").first 
        expect(afr_box.checked?).to eq false

        asia_box = page.all("#preference_region_ids_#{asia.id}").first 
        expect(asia_box.checked?).to eq true
      end

这是控制器的更新方法:

  def update
    @prefs.update(pref_params)
    add_home_airport(params) if params[:preference][:home_airport]
    delete_vacations(pref_params) if pref_params[:vacations_attributes]
    redirect_to preferences_path
  end

当我在浏览器中测试功能时,它可以工作。正确修改了区域,并正确选中了重定向页面上的复选框。

运行规范时,如果我在update操作的末尾撬入,则说明它已正常运行。但是,该规范失败。如果我刚好在期望值之前(在单击“保存”按钮之后)撬开该规格,则我发现regions阵列已添加了Asia而不是删除Africa,即使刚才,从控制器中撬动表明它可以正常工作正确。

这是怎么回事?

0 个答案:

没有答案