2011-04-06 82 views

回答

2

我想你將不得不擴展sfTesterMailer來獲取消息(這是在那裏,但是被保護)。就在你的功能測試,也許你可以這樣做:

class myTesterMailer extends sfTesterMailer { 
    public function getMessage() { 
    return $this->message; 
    } 
} 

class myTestFunc extends sfTestFunctional { 
    public function getMessage() { 
    $message = $this->with('mailer')->getMessage(); 
    return $message; 
    } 
} 

$browser = new myTestFunc(new sfBrowser(), null, array('mailer' => 'myTesterMailer')); 

$message = $browser->getMessage(); 
... do tests on $message->getBody() ... 
+0

爲什麼我需要getMessage函數中的$ this-> end()? – Dziamid 2011-04-08 10:07:22

+0

你說得對,我不認爲你需要它。 (我以爲我用begin()打開了一個塊,但實際上我沒有,因爲它只是一個調用郵件測試程序的函數,所以不需要。)我將編輯答案。 – matt 2011-04-08 16:36:22

1

如果你已經正確配置您的工廠,這應該工作:

$browser-> 
//the rest of your test here 
    with('mailer')->begin()-> 
    checkHeader('Subject', '/Hello world/')-> 
    checkBody('/Hello stack overflow/')-> 
    end(); 

更多信息,請in the documentation

+0

我真正想要的是像$身體= $瀏覽器的> getMailer() - >的getMessage() - > getBody()。這個想法是提取一個鏈接,通過註冊郵件發送給用戶,然後用它進行測試。 – Dziamid 2011-04-07 17:44:40