Asked Oct 23rd, 2018 7:59 AM 45 0 1
  • 45 0 1
0

Cách dùng PyStringNode trong Behat đối với ngôn ngữ PHP

Share
  • 45 0 1

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 ANSWERS


Answered Oct 25th, 2018 5:58 AM
Accepted
0

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

Share