2012-04-30 28 views
25

Tôi đang học nodej và tôi có một cơ sở dữ liệu mongodb mà tôi phải tương tác với. Tôi hiện đang nghĩ đến việc sử dụng mocha cho một khung kiểm thử đơn vị và zombie.js cho một khung kiểm tra chấp nhận. Tôi đã tự hỏi làm thế nào tôi có thể làm thử nghiệm chấp nhận quy mô đầy đủ mà nhấn cơ sở dữ liệu mongodb. Có một khuôn khổ/mô-đun giúp thay thế cơ sở dữ liệu bằng cơ sở dữ liệu thử nghiệm hay không hoặc mocha hoặc zombie.js có chức năng có thể dễ dàng được sử dụng để thay thế cơ sở dữ liệu.Mock/Test Cơ sở dữ liệu Mongodb Node.js

Cũng có một khung tương tự với ý tưởng của các nhà máy (thay vì đồ đạc) trong việc tạo các đối tượng cơ sở dữ liệu.

Một khái niệm tương tự mà tôi gặp trong thế giới đường ray là trong rspec, có tệp spec_helper.rb chạy trước khi chạy thử nghiệm, thiết lập cấu hình dự án để quyết định cơ sở dữ liệu nào sẽ chạy khi chạy thử nghiệm. Và nó sử dụng database_cleaner để làm sạch cơ sở dữ liệu thử nghiệm trước khi chạy thử nghiệm. Đối với các nhà máy, tôi đã sử dụng Factory girl để tạo các đối tượng nhà máy từ lược đồ cơ sở dữ liệu một lần nữa trong thế giới đường ray.

Cảm ơn

+0

Tôi đã tạo một thư viện để cho phép hành vi factory_girl/machinist - ectypes (từ lạ, nhưng có ý nghĩa khi bạn biết ý nghĩa của nó). Có một chút khác biệt với thế giới Ruby vì không có ORM/ODM chuẩn trong Node.js, vì vậy bạn phải xác định một 'chiến lược' cho lớp kiên trì. Chúng không khó để làm. Tôi có một cho Sequelize tại thời điểm này. Xem https://github.com/nicholasf/ectypes.js – nicholasf

Trả lời

3

Có một số

http://mongodb.github.com/node-mongodb-native/github/github.html#test-helpers-and-libraries

nhưng bạn có thể muốn chỉ cần tìm kiếm trên github hoặc yêu cầu trong nhóm google là tốt.

+1

[Trang duy nhất liên kết đến] (https://github.com/tdegrunt/mongodb-fixtures) dường như thiếu bất kỳ cách nào để truy vấn cơ sở dữ liệu giả, như [một vấn đề từ ba năm trước] (https://github.com/tdegrunt/mongodb-fixtures/issues/3) đã chỉ ra. Tôi có hiểu lầm, hay điều đó làm cho nó hoàn toàn không thể sử dụng được cho gần như tất cả các mục đích? – Josh1billion

2

Nếu truy cập cơ sở dữ liệu của bạn là một mô-đun riêng biệt, bạn có thể thử ra các mô-đun hoặc các bộ phận của các module (ví dụ, phần cấu hình) bằng một trong các cách sau:

Câu trả lời cho câu hỏi liên quan sau đây liệt kê một số giải pháp/phương pháp có thể có: How do you mock MySQL (without an ORM) in Node.js?

Các vấn đề liên quan