0
我有一個監聽器,它的行爲不同,具體取決於HTTP_USER_AGENT:如何僞裝Symfony2 Listener UnitTest中的HTTP_USER_AGENT?
if ($request->server->get('HTTP_USER_AGENT') == $this->zabbixUserAgent) {
VisitorHolder::set($visitor);
} else {
VisitorHolder::set($this->visitorService->persist($visitor));
}
我想避免保存所有的zabbix請求到我們的數據庫。這很好,但是我怎麼能在我的單元測試中僞造用戶代理,以便我的測試覆蓋這種情況?
創建一個新的請求,並設置用戶代理有徹底忽略:
$this->currentRequest = new Request(
[], // GET parameters
[], // POST parameters
[], // request attributes (parameters parsed from the PATH_INFO, ...)
[], // COOKIE parameters
[], // FILES parameters
['HTTP_USER_AGENT' => 'zbx'], // SERVER parameters
null // raw body data
);
$this->requestStack
->expects($this->any())
->method('getCurrentRequest')
->willReturn($this->currentRequest);
在單元測試的var_dump告訴我,我的用戶代理仍然是零,而不是覆蓋我的情況。
任何想法如何爲這種情況下設置用戶代理?
啊確定你提出我寫了一種userAgentCheckerHelper的這如果需要,我可以再嘲笑? –
類中的函數或包裝函數的服務,是的。 –
如何嘲笑$ request-> server-> get? 我認爲,但由於沒有像getServer方法模擬我卡在那裏。 你有什麼想法做到這一點? –