Cách dùng PyStringNode trong Behat đối với ngôn ngữ PHP
Tôi đọc trên behat.org về vấn đề liên quan đến pystrings trong Behat nhưng khá là mơ hồ. Tôi chỉ hiểu nó được dùng để xác định 1 đoạn text. Còn cách xử lý về code trong code tôi cũng cảm thấy khó hiểu. Vậy mọi người có thể giải thiếu về cho tôi ví dụ về phần này đc ko
1 CÂU TRẢ LỜI
pystrings
là cách để khai báo một đoạn văn bản dài trên nhiều dòng (Multiline Strings). Sở dĩ nó có tên là pystrings
bởi vì nó vay mượn cú pháp của Python.
Trong Python, ta có thể dùng """
để khai báo một đoạn comment block, tức ta có thể viết bao nhiêu nội dung vào giữa phần mở """
và phần đóng """
cũng được.
Behat cũng sử dụng cú pháp đó để cho phép bạn khai báo một đoạn text dài, nhiều dòng. Tức bình thường thay vì bạn viết
Scenario:
Given a post with the content "This is a very long post \n This is a new line \n This a another new line \n As you see, we have to use /\n for a line break"
Bạn có thể dùng cú pháp của pystrings
để viết thành
Scenario:
Given a post with the content:
"""
This is a very long post
This is a new line
This a another new line
As you see, we do not have to use \n for a line break
"""
Đoạn multiline strings này sẽ tự động được xử lý bởi class PyStringNode
, và một instance của class này sẽ tự động được đẩy vào hàm của bạn ở argument cuối cùng.
/**
* @Given a post with the content:
*/
public function blogPost(PyStringNode $content)
{
$this->checkLength($content->getRaw());
}
Để lấy ra nội dung text từ một instance PyStringNode
bạn có thể dùng hàm ->getRaw()
như ở trên
Bạn có thể xem thêm tại Document của Behat tại đây