2013-09-26 38 views
6

Tôi đang sử dụng PHPUnit và cố gắng kiểm tra xem văn bản có tồn tại trên một trang hay không. AssertRegExp hoạt động nhưng sử dụng câu lệnh if tôi nhận được lỗi Failed asserting that null is true.PHPUnit assertTrue nếu tìm thấy văn bản regex?

Tôi hiểu rằng $ test trả về null, nhưng tôi không biết cách trả về 1 hoặc 0 hoặc true/false nếu văn bản tồn tại? Lời cảm ơn của bất kỳ trợ giúp nào.

 $element = $this->byCssSelector('body')->text(); 
     $test = $this->assertRegExp('/find this text/i',$element); 

     if($this->assertTrue($test)){ 
      echo 'text found'; 
     } 
     else{ 
      echo 'not found'; 
     } 
+0

Một khẳng địnhMột cái gì đó() không thuộc về câu lệnh if. Nó là một loài tồn tại trong sự cô lập. Vì vậy, ít nhất là cho tôi nó không rõ ràng những gì bạn làm ở đây. Thông thường cũng không có đầu ra liên quan trong các bài kiểm tra đơn vị. Tôi có thể hỏi tại sao bạn muốn/cần phải làm gì? – hakre

+0

@hakre nếu văn bản tồn tại trên trang tôi cần để bắt đầu chạy các chức năng khác nhau. Làm thế nào tôi có thể viết một điều kiện cho điều này? – Anagio

+0

Tại sao bạn muốn? Đây là đơn vị thử nghiệm và hoạt động khá tốt mà không có điều kiện. – hakre

Trả lời

15

assertRegExp() sẽ không trả lại gì cả. Nếu khẳng định thất bại - có nghĩa là văn bản không được tìm thấy - sau đó đoạn mã sau sẽ không được thực thi:

$this->assertRegExp('/find this text/i',$element); 
// following code will not get executed if the text was not found 
// and the test will get marked as "failed" 
4

PHPUnit không được thiết kế để trở lại giá trị từ khẳng định. Assertions theo định nghĩa có nghĩa là để phá vỡ dòng chảy khi họ thất bại.

Nếu bạn cần làm điều gì đó như thế này, tại sao bạn lại sử dụng PHPUnit? Sử dụng preg_match:

$test = preg_match('/find this text/i', $element); 

if($test) { 
     echo 'text found'; 
} 
else { 
     echo 'text not found'; 
} 
+0

PHPUnit IS được thiết kế để hỗ trợ các hoạt động như vậy. Hãy xem câu trả lời @ hek2mgl. –

+0

Điều này tùy thuộc vào ý nghĩa của các hoạt động _such_. Tôi có nghĩa là PHPUnit không được thiết kế để trả về giá trị từ các xác nhận. Assertions theo định nghĩa có nghĩa là để phá vỡ dòng chảy khi họ thất bại. Nếu bạn muốn sử dụng kết quả của đối sánh regexp trong câu lệnh 'if', thì' preg_match' là cách để đi. –

+1

Tôi đã nhận được bạn ngay bây giờ. Dường như với tôi bạn đang cố gắng nói rằng "các hoạt động như vậy" như 'assertRegExp'. –

Các vấn đề liên quan