2010-12-31 10 views
2

나는단위 테스트 : 젠드의 ErrorController에서 비 객체의 멤버 함수 hasResource()를 호출

Fatal error: Call to a member function hasResource() on a non-object in D:\Projects\Tickle\application\controllers\ErrorController.php on line 53

라인 53 외모

같은이 오류를 얻고있다
if (!$bootstrap->hasResource('Log')) { 

$this->getInvokeArg('bootstrap')null으로 표시됩니다. 나는 다른 오류가 없다. 나는 다른 곳에서 예외를 제기하여 컨트롤러 나 부트 스트랩 등을 재설정하는 다른 문제를 읽었다. 예외가 표시되지 않을 수도 있습니까? 심지어 PHP 오류 로그에? 나는 1 개 테스트 왼쪽 오전까지 내가 모든 파일/테스트를 제거하려고 http://pastebin.com/YiP7i736

  • phpunit을의 bootstrap.php

    단일 테스트가 잘 실행하지만, 오류가 계속 발생했습니다.

    D:\Projects\Tickle\tests>phpunit 
    PHPUnit 3.5.5 by Sebastian Bergmann. 
    
    . 
    Fatal error: Call to a member function hasResource() on a non-object in D:\Projects\Tickle\application\controllers\Error 
    Controller.php on line 53 
    
  • +0

    테스트를 실행 했습니까? –

    +0

    @ St.Woland, 네, 네가 물어 보았으니, 적어도 시험이 1 회있을 때 모든 시험이 실행 된 것처럼 보인다. 어쩌면 그것은 결국 오른쪽으로 던져 질 것입니다. –

    +0

    응용 프로그램에 대한 오류 리소스를 비활성화하고 출력 결과를 확인하십시오. 코드의 다른 오류와 관련이있을 수 있습니다. –

    답변

    6

    b ootstrap param은 $application->run()에 전화 할 때 등록됩니다. 단위 테스트 부트 스트랩에서 run이 호출되지 않습니다. 이 코드를 사용하여 직접 boostrap 매개 변수를 설정해야합니다.

    +0

    어떻게'$ bootstrap'도 수동으로 설정합니까? –

    +0

    오 ... 저는'$ application-> getBootstrap()'을 사용할 수 있습니다 만, 어떻게'$ application'을 제 'ControllerTestCase'에서 얻을 수 있습니까? 나는 그 phpunit의'bootstrap.php'에 그 라인을 넣으려고했는데 작동하지 않았다. 여전히 리소스가 부족하다. –

    +0

    내가 발견 한 이상한 것들은 "기본 모듈이 정의되어 있지 않다"라는 것을 알게되었다. 모듈을 사용하지 않고 나의' application.ini' 나는 이미 'controllerDirectory'를 정의했습니다. Qn & Sol [** here **] (http://stackoverflow.com/questions/4507165/zend-test-no-default-module-defined-for-this -신청). 그들이 관련이 있는지 궁금해. 내 frontController가 재설정 된 것처럼 보입니다. $ bootstrap = $ this-> getFrontController() -> getParam ('bootstrap')'과'print_r ($ bootstrap)'아무것도 얻지 못할 때 –