Tôi đã sử dụng Phát triển thử nghiệm trong ứng dụng Seaside tôi đã chơi cùng và tất cả dữ liệu của tôi được lưu trữ dưới dạng đối tượng trong hình ảnh (trái ngược với cơ sở dữ liệu).Đồ đạc thử nghiệm hoặc tương đương với dữ liệu thử nghiệm với Smalltalk Seaside?
Vì vậy, khi tôi chạy thử nghiệm của tôi, tôi đã phải cẩn thận để lưu trữ đi những dữ liệu thực tế trước khi nó được đưa vào thùng rác với dữ liệu thử nghiệm, như thế này:
ToDoTest>>setUp
savedTasks := Task tasklist.
Task deleteAllTasks.
savedProjects := ToDoProject projectlist.
ToDoProject deleteAllProjects.
savedPeople := Person peoplelist.
Person deleteAllPeople.
Và:
ToDoTest>>tearDown
Task tasklist: savedTasks.
ToDoProject projectlist: savedProjects.
Person peoplelist: savedPeople
Vấn đề xảy ra khi các thử nghiệm của tôi thất bại, tất nhiên là họ làm điều này, bật lên trình gỡ rối, và sau đó tôi có thể sửa chữa, nhưng tearDown không phải lúc nào cũng được gọi và vì vậy tôi có thể mất dữ liệu thực của mình.
Tôi lưu dữ liệu ra tệp, do đó, nó không phải là một vấn đề lớn, nhưng nó không phải là trơn tru và tự động như tôi muốn nó được.
Dù sao tôi có thể cải thiện điều này?
Thú vị. Tôi nghĩ ý tưởng phân vùng dữ liệu theo một cách nào đó có thể giúp ích ở đây. Ví dụ ứng dụng công việc đơn giản của tôi hiện không có khái niệm về người dùng, tôi có thể thêm các ứng dụng này và sau đó tạo người dùng thử nghiệm cho các bài kiểm tra đơn vị. –
Có nhiều cách để làm điều đó. Nếu bạn muốn bản địa hóa dữ liệu của bạn một cách dễ dàng là di chuyển mọi thứ từ bên lớp sang bên ví dụ. Nếu ToDoProject là lớp chính của bạn, hãy di chuyển các phương thức bên lớp sang phía cá thể. Bạn sẽ có ToDoProject >> # taskList, ToDoProject >> # projectList, ... Trong bước đầu tiên bạn có thể thực hiện ToDoProject một singleton để lớp ToDoProject >> # mặc định sẽ trả về thể hiện ToDoProject bằng dữ liệu thực của bạn.Thành phần bên bờ biển của bạn sẽ có một "dự án" instVar. Sau đó, bạn cấu hình thành phần của mình với "ToDoProject default" để sử dụng thực tế và để kiểm tra bạn thiết lập "ToDoProject new" –