2010-03-04 38 views
9

Tôi có một lớp trừu tượng có phương thức ảo. Phương thức này là ảo trong trường hợp triển khai sau này cần phải ghi đè chức năng đó.Thiết lập Moq để bỏ qua một phương thức ảo

Tuy nhiên, Moq proxy tất cả các phương pháp ảo vì vậy tôi dường như không có khả năng kiểm tra mã thực tế đó là viết ra, và thay vào đó sử dụng các thiết lập Mock cho phương pháp đó (mà hiện nay là để trả về giá trị mặc định).

Ví dụ trừu tượng:

public abstract SomeAbstract 
{ 
    public abstract Format(IFormatProvider provider, string format) 
    { 
      // does some stuff i need to test 
    } 
} 

kiểm tra NUnit của tôi:

[Test] 
public void Should_Set_Format_State() 
{ 
    Mock<SomeAbstract> mock = new Mock<SomeAbstract>(); 
    mock.Object.Format(CultureInfo.CurrentCulture, "format string"); 

    // do tests to make sure Format correctly changed the object's state 
} 

Làm thế nào để thiết lập đối tượng Mock của tôi để chỉ cho phép làm việc Format phương pháp ảo của tôi, mà không cần phải loại bỏ virtual từ phương pháp này ?! Có lẽ tôi đang lạm dụng khái niệm mocking trong trường hợp này.

+0

Câu hỏi thú vị, tôi đã học được điều gì đó! Yay. –

Trả lời

14

Tôi tin rằng việc đặt "CallBase = true" trên mô hình sẽ hoạt động. Xem phần "Tùy chỉnh hành vi mô phỏng" của Quick Start

+0

Rất tiếc, tôi là một thằng ngốc. Cảm ơn! – HackedByChinese

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