기능 테스트 중의 부하 자원 문제

4377 단어 cancan

묘사

여보세요,
나는 두 개의 컨트롤러가 있는데, 하나는 입찰이고, 다른 하나는 임무이다.할당 컨트롤러 load 와 AU authorize 자원이 완전히 정상적으로 작동하고 할당 모델에서 관련 대상을 자동으로 불러옵니다. 그러나 기능 테스트를 실행할 때 관련 대상을 불러오지 않습니다.나중에, 나는 이 두 모델을 끼워 넣으려고 시도했는데, 그것은 성공했다.무슨 문제인지 검사해 주시겠어요?
class AssignmentsController < ApplicationController
    load_and_authorize_resource :nested => [:tender,:assignment]
end

토론 #1

Can you post your functional test along with the error/output you're getting?

토론 #2

Here is test and error output but i think it will not help you in resolving this problem.We have also faced cancan exception when there are no rules defined in ability file but in this case there is no cancan exception. Thanks

context "take supervisor role back" do setup do put :update, {:tender_id=>@tender.id, :id=>@new_assignment.id, :assignment=>{:role_id=>@verifier_role.id,:supervisor=>"0"}} end

      should_set_the_flash_to I18n.translate('flash.assignment.update.successful')

      should "verify supervisor role has been taken back from colleague and now it has tender_verifier" do
        assert_equal @new_assignment.reload.role_id, @verifier_role.id
      end
    end

오류 출력


NoMethodError: 정의되지 않은 방법company_id' for nil:NilClass app/models/assignment.rb:304:in 설정 대입 속성'
응용 프로그램/모델/작업.rb:86
애플리케이션/디렉터/할당/디렉터rb:60:inupdate' haml (2.2.21) [v] rails/./lib/sass/plugin/rails.rb:20:in 프로세스
테스트/기능/할당\컨트롤러\테스트.rb:540:in__bind_1271827543_192341' /opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.10.2/lib/shoulda/context.rb:369:in 호출
/opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.10.2/lib/shoulda/context.rb:369:inrun_current_setup_blocks' /opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.10.2/lib/shoulda/context.rb:368:in마다'
/opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.10.2/lib/shoulda/context.rb:368:inrun_current_setup_blocks' /opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.10.2/lib/shoulda/context.rb:360:in 모든 설정 블록 실행
/opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.10.2/lib/shoulda/context.rb:364:inrun_parent_setup_blocks' /opt/ruby-enterprise-1.8.7-2009.10/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.10.2/lib/shoulda/context.rb:348:in 테스트: 기능을

토론 #셋

Hi Ryan으로 편집,
이전에 나는 "나중에 나는 이 두 모델을 끼워 넣으려고 시도했는데, 결과는 모두 성공했다."라고 썼다.이것은 오류입니다. 다음 코드를 작성하는 것은 테스트 용례에서 작동하지 않기 때문에 @assignment=assignment를 실행해야 합니다.이 문제를 수정하려면 (params[:id])를 찾습니다.고마워요 고마워요
클래스 할당 컨트롤러 < 응용 프로그램 컨트롤러
리소스 로드 및 승인: 중첩 =>[: 입찰,: 할당]
end

토론 #4

플러그인에서 값을 언급해서는 안 됩니다. 컨트롤러가 있기 때문입니다.그것을 제거해 보아라.
클래스 할당 컨트롤러 < 응용 프로그램 컨트롤러
리소스 로드 및 승인: 중첩 =>: 입찰
끝맺다
그 후@assignment가 여전히nil인지 알 수 있게 해줘.

토론 #5

시험해 보았지만, 대상을 정확하게 불러오지 않았고, 필드가 부족합니다.다음 테스트 용례와 컨트롤러 사이의 기록 상태를 확인하십시오.고마워요 고마워요
테스트 용례에서 할당된 상태:
할당: 0x2560354{
:id=>10291,
: state=> 수락됨,
: 발송 주소=>2010년 4월 22일 목요일 13:38:00 GST+04:00,
: e-메일 => 없음,
:assignable_type=>“Tender”,
:assignable_id=>1319,
: 마감일자=>2010년 4월 29일 목요일 13:38:00 GST+04:00,
: 캐릭터 id=>11115,
: 양수인\사용자\id=>8973,
: 양수인 회사 id=>3212,
: 양도인 회사 id=>3212,
: 작성 시기 = > 2010년 4월 22일 목요일 13:38:00 GST+04:00,
: 업데이트: 2010년 4월 22일 목요일 13:38:00 GST+04:00
}
편집 작업 중 컨트롤러의 할당 상태:
분배 id:nil, 상태:nil, 발송 주소: "2010-04-22 09:38:00", 이메일:nil, 분배 유형: "입찰", 분배 id:1319, 마감일: "2010-04-29 09:38:00", 역할 id:nil, 분배 사용자 id:8973, 분배 회사 id:nil, 분배 회사 id:nil, 창설 주소:nil, 업데이트 주소:nil

토론 #6

, 여기 무슨 소용이 있는지 정말 모르겠어요.그러나 중첩된 리소스가 CanCan 1.3에서 완전히 재설정되었으므로 문제가 해결되었는지 다시 시도해 보십시오.만약 네가 이곳에서 평론을 발표하지 않고 이 문제를 다시 묘사한다면 나는 해결 방안을 찾기 위해 노력할 것이다.

토론 #7

고마워요, 리안 씨. 제가 캔캔 1.3과 대조해서 알려드릴게요.

좋은 웹페이지 즐겨찾기