2011-10-17 24 views
10

Giả sử tôi có một lớp học Order, có thể ở ba trạng thái khác nhau: CheckedState, PaidStateOrderedState.Làm thế nào để đơn vị kiểm tra một máy nhà nước?

Máy trạng thái sẽ được triển khai bằng Mẫu thiết kế trạng thái chuẩn (Gof).

Bạn thường kiểm tra đơn vị này như thế nào? Bạn có sử dụng vật cố định cho mỗi loại trạng thái (CheckStateFixture, PaidFixture, ...) và một loại khác (OrderFixture) cho lớp ngữ cảnh không? Hay bạn chỉ sử dụng một vật cố định cho lớp ngữ cảnh (Order), trong đó bạn sẽ đặt tất cả các bài kiểm tra đơn vị?

Trả lời

5

Tôi muốn giữ cơ sở hạ tầng của Nhà nước riêng biệt với chính tổ chức đó. Vì vậy, bạn sẽ phải

  • Entity class (theo thứ tự)
  • lớp Nhà nước cơ sở hạ tầng

Đối với Hoa Hạ tầng Tôi sẽ đề nghị sử dụng cố định duy nhất cho mỗi thực thể, vì vậy một OrderStateFixture cho thứ tự Hoa Hạ tầng sẽ đủ .

Các thử nghiệm chính sẽ là các bài kiểm tra nhằm đảm bảo rằng nhà nước tự chuyển mạch một cách chính xác:

  • Đảm bảo rằng trạng thái ban đầu của một trật tự được NotChecked
  • Sau khi thực hiện thành công các thiết bị chuyển mạch Order.Paid(amount) phương pháp Order.State để Paid
  • Nếu Order.Verify() trả về true/vượt qua không có ngoại lệ - Order.State bị Checked/đã kích hoạt
+0

Cám ơn câu trả lời của bạn! Mặc dù tôi muốn làm rõ, bạn có thể đưa các bài kiểm tra chuyển tiếp đó vào OrderFixture hoặc trong OrderStateFixture không? –

+0

Nó phụ thuộc vào người chịu trách nhiệm thực hiện chuyển tiếp, nếu Lệnh tự chuyển đổi - đây sẽ là OrderFixture hoặc OrderStateFixture – sll

+0

Điều đó nghe hay, cảm ơn! –

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