THẢO LUẬN

thg 4 12, 2019 3:18 CH

em chưa hiểu phần gộp những sevice kia lại kiểu j.a có thể giúp e đc ko ạ. nguyenngocson.haui@gmail.com

0

e lên đây đọc bài rồi đi comment dạo 😂 , bất ngờ thấy anh nổi lên

0
thg 4 12, 2019 9:08 SA

Hay quá anh ơi. Tym tym ❤️ ❤️ ❤️

+1

Bài viết của anh rất hay 😍 cảm ơn vì đã chia sẻ

+1

E làm gì trong cái Viblo này =))

0
    public function cities()
    {
        return $this->morphToMany('App\City', 'model', 'multi_cities');
    }

Thử xem được ko nhé.

0

Nhìn ngon quá! ^^

+1
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 4 12, 2019 6:37 SA

1 cái nữa là em đang test repository nhưng trong test em lại dùng eloquent làm active record

good practice :

  • mock database connection (ví dụ in-memory chẳng hạn) -> mock kết quả trả về từ hàm model->orderBy('updated_at', 'DESC')->get();
  • spy hàm orderBy('updated_at', 'DESC') ,đặt các expect cho nó được gọi mấy lần và những tham số có như mình kỳ vọng không
  • so sánh kết quả trả về từ repository với kỳ vọng của mình

-> bản thân model là các library dùng sẵn nên mình chỉ nên dùng nó như 1 spy chứ không nên mock , vì sao ? bởi vì nghiễm nhiên model nhận đúng tham số thì nó phải trả về 1 kết quả đúng -> không đúng thì đi kiện thằng viết library nhé

+2
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 4 12, 2019 6:34 SA

Với cùng một đoạn code, không phải cứ áp dụng được nhiều kỹ thuật test vào là nó sẽ trở nên "tốt". Tùy vào mục đích, chi phí và hàng tá các tiêu chí khác mà bạn có thể áp dụng kỹ thuật test phù hợp.

Chỉ xét riêng trong ví dụ này, tôi sẽ không viết unit test cho repository, hãy sử dụng integration test cho phần này.

+3
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 4 12, 2019 6:26 SA

@jquery123 Ở đây mình muốn test chặt chẽ hơn 1 chút, cụ thể là test đối với câu truy vấn SQL thuần thì phải thiết kế test như thế nào ? Tức là mình muốn so sách câu SQL select * from table order by updated_at as DESC thuần với câu truy vấn hiện tại của mình xem có khớp hay không ?

Bản thân mục đích test của em đang bị chệch hướng rồi, bản thân eloquent lẫn mysql đều là các interface/ và implementation có sẵn, có nghĩa là em không có trách nhiệm test chúng nó 😄

+1
thg 4 12, 2019 6:08 SA

@TuanAnh9996 vậy thì các đơn giản nhất bạn có thể sử dụng đó là xây dựng một bộ từ điển các tag ra rồi sử dụng best match để tìm ra được tập các tag phù hợp với tên công thức nhất. Cách này hơi mất thời gian chuẩn bị tên công thức nhưng đối với các dạng câu ngắn như này mình nghĩ nó sẽ hiệu quả. Ngoài ra bạn thể tiếp cận theo bài toán Named Entity Recognition nhưng vẫn cần chuẩn bị dữ liệu cho thuật toán này vì các dữ liệu này khá là đặc thù, không có sẵn.

+1

Í anh là Viblo hay Framja a?

0
thg 4 12, 2019 6:01 SA

@pham.van.toan đầu tiên mình cũng nghĩ là họ cho AI nhận dạng hình ảnh, nhưng khi mình không up ảnh lên hoặc ảnh lung tung thì nó vẫn có thể lấy ra được những tag đó 😄, mình nghĩ là họ đã cắt ra từ cái tên công thức vì khi mình sửa cái tên thì đống tag đó cũng thay đổi theo

0

Làm gì ở đây hả em =))

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 4 12, 2019 5:47 SA

@thangtd90 Anh vừa nhắc em mới nhớ thêm 1 vấn đề nữa khi viết Test. Như em hiểu thì mình sẽ viết test dựa vào spec dự án đưa ra nhưng ở đây hình như mình đang test theo hướng dựa vào logic code, dẫn tới việc khi sửa code đồng nghĩa với việc sửa test, Vây có phải mình đã đi sai đường chăng ? Rất mong được trao đổi với anh và mọi người 😅😅

0
thg 4 12, 2019 5:12 SA

=)) cảm ơn sao lại -1 của bạn thế

0
thg 4 12, 2019 4:31 SA

Cảm ơn bạn vì đã chia sẻ những điều này 👍 Thật sự tuyệt vời.

0

ahihi

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí