2017-04-20 36 views
1

類型錯誤運行PHPUnit的測試時,出現此錯誤:傳遞給Drupal的\意見\插件\觀點參數1 \的HandlerBase :: __結構()必須是數組類型的PHPUnit我想對我的Drupal項目

我代碼:

use Drupal\views_simple_math_field\Plugin\views\field\SimpleMathField; 

class BasicTest extends PHPUnit_Framework_TestCase 
{ 
    public function test_proba() 
    { 
    $first = 25; 
    $second = 5; 
    $result = 13; 
    $test = new SimpleMathField(); 
    $working = $test->plus($first,$second,$result); 
    $this->assertEquals($result,$working); 

} 
} 

我認爲錯誤是「$測試=新SimpleMathField()內;由於測試運行完美,當我運行它是這樣的:

<?php 

use Drupal\views_simple_math_field\Plugin\views\field\SimpleMathField; 

class BasicTest extends PHPUnit_Framework_TestCase 
{ 
    public function test_proba() 
    { 
    $first = 25; 
    $second = 5; 
    $result = 13; 
    $this->assertTrue(True); 

} 
} 
+0

你測試一個名爲Basic類? –

+0

我測試在SimpleMathFIeld班加()函數,它位於有Drupal的\ views_simple_math_field \插件\意見\現場\命名空間中的extern PHP文件。 –

+0

測試類應該有一個帶有「Test」後綴的名稱。所以它應該是SimpleMathFIeldTest而不是BasicTest。如果你不是很確定自己在做什麼,我會推薦這個優秀的教程:https://jtreminio.com/2013/03/unit-testing-tutorial-introduction-to-phpunit/ –

回答

0

的問題不在於你測試,但你是如何實例化該字段。通過抽象的連鎖類擴展HandlerBase和構造鏈接看起來像這樣:

public function __construct(array $configuration, $plugin_id, $plugin_definition) { 
    parent::__construct($configuration, $plugin_id, $plugin_definition); 
    $this->is_handler = TRUE; 
} 

你可以嘗試這樣的事:

new SimpleMathField(array(), 'test_id', 'test_definition'); 

你可能有在plus()方法,如果某些檢查這些變量傳遞給__construct或由它們初始化是需要的。您也可以嘗試一種叫做局部的嘲弄,在那裏你禁用的構造,但保持測試方法測試:

$partiallyMockedField = $this->getMockBuilder(SimpleMathField::class) 
    ->disableOriginalConstructor() 
    ->setMethods([]) 
    ->getMock(); 

您可能需要添加一些你需要在陣列中被嘲笑的方法。這些將被替換爲您在典型模擬中使用expects()method()指定的內容。

聲明:我不確定您是否必須傳遞一個空數組或明確的null來setMethods來使這項工作,因爲我很少使用部分嘲笑自己。你必須檢查文檔或嘗試自己。

+0

非常感激 我可以」儘管如此,聲譽仍然很低。 –

相關問題