Bạn ơi ví dụ mình đang muốn làm một CSDL riêng để tạo một quyển từ điển được không ạ.
Ví dụ một vài chữ Nôm không xuất hiện ở bất cứ CSDL nào nhưng mình biết nó tồn tại và đưa nó vào từ điển ấy. Mong bạn có 1 bài viết như thế
Tôi đã đọc và làm theo bài viết này, nhưng bài viết này thật là một sự thất vọng lớn đối với tôi, chính vì thế nên tôi phải đăng ý acc để comment lại ngay. Vì bài viết của bạn là tốt đối với bạn nhưng nó không có ích gì cho người đọc như chúng tôi. Chẳng hạn như "Với các bạn chưa biết về CocoaPods, các bạn có thể vào đây để tìm hiểu và cài đặt CocoaPods. CocoaPods là công cụ quản lý thư viện phổ biến được rất nhiều lập trình viên sử dụng." thế này thì ai mà biết được, lỗi tùm lum.
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é
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.
@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ó
@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.
THẢO LUẬN
cảm ơn thớt đã viết bài này!hay quá :V
Bài viết công phu quá
chú phải new 1 cái project rails bằng lệnh rails new <project_name> sau đó cd<project_name> rồi mới bundle được nhé
)
Làm sao để ô ở giữa lớn hơn 2 bên được ạ?
Bạn ơi ví dụ mình đang muốn làm một CSDL riêng để tạo một quyển từ điển được không ạ. Ví dụ một vài chữ Nôm không xuất hiện ở bất cứ CSDL nào nhưng mình biết nó tồn tại và đưa nó vào từ điển ấy. Mong bạn có 1 bài viết như thế
@tiennguyen98 dạ được rồi a, e cảm ơn
Tôi đã đọc và làm theo bài viết này, nhưng bài viết này thật là một sự thất vọng lớn đối với tôi, chính vì thế nên tôi phải đăng ý acc để comment lại ngay. Vì bài viết của bạn là tốt đối với bạn nhưng nó không có ích gì cho người đọc như chúng tôi. Chẳng hạn như "Với các bạn chưa biết về CocoaPods, các bạn có thể vào đây để tìm hiểu và cài đặt CocoaPods. CocoaPods là công cụ quản lý thư viện phổ biến được rất nhiều lập trình viên sử dụng." thế này thì ai mà biết được, lỗi tùm lum.
phải nói là bài viết của bạn rất kì công, tuyệt vời đấy
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
e lên đây đọc bài rồi đi comment dạo
, bất ngờ thấy anh nổi lên
Hay quá anh ơi. Tym tym

Bài viết của anh rất hay
cảm ơn vì đã chia sẻ
E làm gì trong cái Viblo này =))
Thử xem được ko nhé.
Nhìn ngon quá! ^^
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 :
-> 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é
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.
@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ó
@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.
Í anh là Viblo hay Framja a?