source: http://cdn.dev.classmethod.jp/wp-content/uploads/2012/03/sinonjs.png |
Trong lúc mần ăn với TDD JS thì gặp phải tình huống mock một đối tượng và bị báo lỗi "already wrapped". Mần mò một khoảng thời gian, từ google đến stackoverflow rồi thì cũng giải quyết được cái vấn đề này. Hôm nay, có tí thời gian viết bài blog chia sẻ tới mọi người.
Tình huống gặp phải
Mình dùng MongoDB làm model, rồi sinon làm test. Và đoạn test ban đầu thế này
Đoạn code bên trên chỉ là một đoạn demo, ý muốn nói là mình có 2 method và cùng gọi qua method Update của Mongoose. Và khi chạy test (mình dùng mocha) thì gặp ngay tình huống như sau:
Loay hoay 1 hồi thì tạm hiểu là mình đã "mock" đối tượng model ra một lần với method Update rồi, giờ "mock" nữa nó không cho, nó la làng la xóm.
Xử lý tình huống
Ok, vậy giờ fix cái này để chạy test ok. Đoạn code được fix như sau:
Bây giờ thì mọi thứ trở nên tốt hơn. Bạn không tin, có thể thử mà ^_^. Hy vọng bài chia sẻ này sẽ giúp các bạn tiết kiệm được thời gian khi gặp cùng tình huống giống như thế này. Cảm ơn đã đọc hết bài
No comments:
Post a Comment