2008-10-23 36 views
53

Tôi có thể tìm tài liệu toàn diện về MOQ ở đâu? Tôi chỉ mới bắt đầu với chế nhạo và đang gặp khó khăn trong việc thu hút đầu tôi. Tôi đã đọc qua tất cả các liên kết tại http://code.google.com/p/moq/wiki/QuickStart nhưng dường như không thể tìm thấy hướng dẫn hoặc giới thiệu nhẹ nhàng.Tài liệu MOQ ở đâu?

Tôi cũng đã xem xét một thời gian ngắn tại Rhino Mocks nhưng thấy nó rất khó hiểu.


Có - tôi đọc bài viết của Stephen Walthers - rất hữu ích. Tôi cũng đã đi qua các liên kết. Tôi dường như không thể xem video tại http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq [link hỏng]

Cụ thể tôi đang cố gắng để xác định xem một sự kiện đã được huy động từ các lớp chế giễu. Tôi không thể lấy ví dụ cho các sự kiện trên trang QuickStart để biên dịch. Trên các nhóm google, Daniel giải thích rằng CreateEventHandler chỉ có thể xử lý một sự kiện kiểu EventHandler<TEventArgs>, nhưng thậm chí sau đó tôi không thể lấy mã để biên dịch.

Cụ thể hơn, tôi có một lớp thực hiện INotifyChanged.

public class Entity : INotifyChanged 
{ 
    public event PropertyChangingEventHandler PropertyChanging; 

    public int Id 
     { 
      get {return _id;} 
      set { 
       _id = value; 
       OnPropertyChanged("Id"); 
       } 
     } 

    protected void OnPropertyChanged(string property) 
     { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
etc .....  
} 

Làm thế nào để chế nhạo các lớp để kiểm tra xem sự kiện PropertyChanged đã bị sa thải? Tôi không thể viết lại các sự kiện vào public event EventHandler<PropertyChangedEventArgs> bởi vì tôi nhận được lỗi này:

Error 1 'CoreServices.Notifier' does not implement interface member System.ComponentModel.INotifyPropertyChanged.PropertyChanged'. 'CoreServices.Notifier.PropertyChanged' cannot implement 'System.ComponentModel.INotifyPropertyChanged.PropertyChanged' because it does not have the matching return type of 'System.ComponentModel.PropertyChangedEventHandler'.

+0

Lỗi được hiển thị là lỗi trực quan/trình biên dịch. Chỉ cần xóa mọi thứ khỏi thư mục bin và xây dựng lại. – CodingBarfield

+0

Các liên kết đến * Giới thiệu về Mocking với Moq * trong câu trả lời của tôi là cố định. –

+0

liên kết bị hỏng (một lần nữa) – PPC

Trả lời

15

Bạn đã xem Introduction to Mocking with Moq? Đó là một tổng quan giới thiệu về cách sử dụng Moq và dành cho những người mới hoặc mocking nói chung, hoặc chính khuôn khổ Moq.

30

Moq là bây giờ đã có tại trang wiki github:

https://github.com/Moq/moq4/wiki/Quickstart

Trước đây họ trên Google Code. Cũng như wiki và các tài nguyên trực tuyến khác, có tài liệu đầy đủ ở định dạng tệp trợ giúp .CHM của Windows có trong số Moq binary download được liên kết từ the Moq homepage.

+1

Liên kết trực tiếp tới bản phát hành mới nhất (4.0.10827): http://moq.googlecode.com/files/Moq.4.0.10827.Final.zip – vossad01

+0

Rất kỳ lạ và nền tảng cụ thể, nhưng khá chức năng! –

+1

không có đủ chi tiết để gọi * tài liệu * – anatol

1

I am trying to determine whether an event was raised from the mocked class.

Bạn có? Hay bạn đang cố xác định xem thuộc tính Id đã được đặt chưa? Hãy nhớ rằng, theo mặc định, một mô hình không có hành vi. Nó không nâng cao sự kiện thông báo.

tôi muốn làm:

const int ExpectedId = 123; 
mockEntity.VerifySet(x => x.Id = ExpectedId); 

này giả định rằng Entity thực hiện một giao diện; một ví dụ:

public interface IKeyedEntity 
{ 
    int Id { get; set; } 
} 

Điều đó nói rằng, nếu Entity là một POCO không có hành vi thú vị tôi không muốn thực hiện một giao diện (trừ INotifyChanged) hay chế nhạo nó. Thử nghiệm với một ví dụ thực tế Entity (chỉ cần không sử dụng cơ sở dữ liệu). Dự trữ chế nhạo cho các dịch vụ và phụ thuộc phức tạp.

Để biết thêm các tính năng Moq,

Old style imperative mocks vs moq functional specificationsMock.Of - how to specify behavior? (thread) xem. Tôi cũng đã đăng ví dụ của riêng tôi về Moq v4 functional specifications.

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