0
PHPの場合、同じクラスの別の関数searchDateOperator()
と$this
というキーワードを使用して別の関数を呼び出すことができます。これのためのユニットテストを書く方法?
public static function segmetDateRangeFilter($searchField, $startDate, $endDate, $dateRange)
{
$filter = [];
if ($startDate && !$endDate) {
$filter = [
'range' => [
$this->searchDateOperator($searchField) => [
'gte' => strtotime($startDate),
]
]
];
}
if ($endDate && !$startDate) {
$filter = [
'range' => [
$this->searchDateOperator($searchField) => [
'lte' => strtotime($endDate)
]
]
];
}
if ($startDate && $endDate) {
$filter = [
'range' => [
$this->searchDateOperator($searchField) => [
'gte' => strtotime($startDate),
'lte' => strtotime($endDate)
]
]
];
}
if ($dateRange !== '') {
// $endTime upto current Time
$endTime = Carbon::now()->timestamp;
// Start Time . substract the date range days. and in timestamp
$startTime = Carbon::now()->subDays($dateRange)->timestamp;
$filter = [
'range' => [
$this->searchDateOperator($searchField) => [
'gte' => $startTime,
'lte' => $endTime
]
]
];
}
if ($filter) {
return $filter;
}
}
通常、 '$ searchField'、' $ startDate'、 '$ endDate'、' $ dateRange'の与えられたセットに対して実際に返された値が期待通りです。これを不可能にする何か他のものがありますか? – xmike
これは関数searchDateOperatorが呼び出されてfuctionをテストする必要があります。テスト関数では、単にこの関数を呼び出してエラーをスローします。エラー:オブジェクトコンテキストにないときは$ thisを使用します。スコープ解決演算子を使った呼び出しはうまくいきます...問題は、$ thisを使って別の関数への参照を持つ関数を呼び出したいのです。 –
ええ、 'segmetDateRangeFilter'が静的であるのを忘れました。これは 'searchDateOperator'を静的にする(そうでないと意味がない)。したがって、 '$ this-> searchDateOperator($ searchField)'を 'self :: searchDateOperator($ searchField)'に変更すればいいはずです。 – xmike