2014-01-27 45 views
0

以下测试从路径加载所有Markdown文件。它在本地工作,但在Travis上随机失败。有时候,它通过没有任何失败,有时它通过一些PHP版本。这是正在测试的类是hereTravis测试失败,但通过本地机器

public function testLoadMultipleFiles() 
{ 
    $index_content = "<h2>This is a Sub Page Index</h2>" . PHP_EOL . PHP_EOL 
     . "<p>This is index.md in the 'sub' folder.</p>" . PHP_EOL . PHP_EOL 
     . "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>" . PHP_EOL . PHP_EOL 
     . "<p>Donec ultricies tristique nulla et mattis.</p>" . PHP_EOL. PHP_EOL 
     . "<p>Phasellus id massa eget nisl congue blandit sit amet id ligula.</p>" . PHP_EOL; 

    $sub_page_content = "<h2>This is a Sub Page</h2>" . PHP_EOL . PHP_EOL 
      . "<p>This is page.md in the 'sub' folder.</p>" . PHP_EOL . PHP_EOL 
      . "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>" . PHP_EOL . PHP_EOL 
      . "<p>Donec ultricies tristique nulla et mattis.</p>" . PHP_EOL . PHP_EOL 
      . "<p>Phasellus id massa eget nisl congue blandit sit amet id ligula.</p>". PHP_EOL; 

    // Create a stub for the SomeClass class. 
    $parser = $this->getMock('Michelf\MarkdownInterface', array('defaultTransform', 'transform')); 

    $parser::staticExpects($this->at(0)) 
      ->method('defaultTransform') 
      ->will($this->returnValue($index_content)); 

    $parser::staticExpects($this->at(1)) 
      ->method('defaultTransform') 
      ->will($this->returnValue($sub_page_content)); 

    $loader = new MarkdownLoader($parser); 

    $files['sub/index.md'] = array(
     'meta' => array(
      'title'   => 'Sub Page Index' 
     ), 
     'content' => $index_content 
    ); 

    $files['sub/page.md'] = array(
     'meta' => array(
      'title'   => 'Sub Page' 
     ), 
     'content' => $sub_page_content 
    ); 

    $result = $loader->load(ROOT_DIR . 'content/sub', array('md')); 
    $this->assertEquals($files, $result); 
} 

特拉维斯显示了一个失败的运行如下:

There was 1 failure: 
1) Zepto\FileLoader\MarkdownLoaderTest::testLoadMultipleFiles 
Failed asserting that two arrays are equal. 
--- Expected 
+++ Actual 
@@ @@ 
Array (
    'sub/index.md' => Array (
     'meta' => Array (...) 
-  'content' => '<h2>This is a Sub Page Index</h2> 
+  'content' => '<h2>This is a Sub Page</h2> 

-  <p>This is index.md in the 'sub' folder.</p> 
+  <p>This is page.md in the 'sub' folder.</p> 
@@ @@ 
     'meta' => Array (...) 
-  'content' => '<h2>This is a Sub Page</h2> 
+  'content' => '<h2>This is a Sub Page Index</h2> 

-  <p>This is page.md in the 'sub' folder.</p> 
+  <p>This is index.md in the 'sub' folder.</p> 

     <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> 

     <p>Donec ultricies tristique nulla et mattis.</p> 

     <p>Phasellus id massa eget nisl congue blandit sit amet id ligula.</p> 
     ' 
    ) 
) 

回答

2

对不起,长延迟awnsering。

只是猜测,但你是否在本地使用Mac OS X?

Mac OS X按字母顺序返回列表,但在Linux上,文件系统按随机顺序列出文件。

在您的测试错误消息中,您可以看到每个读取的文件都得到了与预期相反的结果indexsub page,导致我相信由于目录列表出现的测试失败而出现随机错误(其他它通过文件系统的时间以正确的顺序返回两个文件)。我不知道任何phpunit,所以我不能帮你解决具体问题。

+0

你是绝对正确的,这很有道理。我已经重构/删除了代码,所以现在并不重要,但是谢谢你让我知道为什么。 –

相关问题