Codeception / Codeception/AspectMock
Test::double doesn't work properly for static methods in parent
- Ngôn ngữ chính
- PHP
- Star
- 784
- Fork
- 132
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
I'm using Yii2, Codeception and AspectMock, when I'm trying to mock/double static method from parent class then original method is used instad of mocked one.
Below example:
class Yii extends \yii\BaseYii
class \yii\BaseYii has static method `error()`
```
public function testStaticMethodForParentIsMocked()
{
$appVerifier = AspectMock\Test::double(\yii\BaseYii::class, [
'error' => function () {
return 2;
}
]);
$test = \Yii::error('test'); // Original method were used
$this->assertEquals(2, $test); // this assert will fail - not correct
$appVerifier->verifyInvokedOnce('error'); // this will pass - correct
}
```
```
public function testStaticMethodForClassIsMocked()
{
$appVerifier = AspectMock\Test::double(\Yii::class, [
'error' => function () {
return 2;
}
]);
$test = \Yii::error('test'); // Mocked method were used
$this->assertEquals(2, $test); // this assert will pass - correct
$appVerifier->verifyInvokedOnce('error'); // this will pass - correct
}
```
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
Bắt đầu với hai phương thức kiểm thử trong issue và tái hiện sự khác biệt giữa việc tạo test double cho \yii\BaseYii và \Yii. Theo dõi cách lời gọi tĩnh thông qua lớp cha được phân giải và so sánh với trường hợp lớp trực tiếp; được coi là hoàn tất khi \Yii::error('test') trả về giá trị mock trong khi việc xác minh lời gọi vẫn thành công.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- php
- Lĩnh vực
- testing
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100