2010-07-12 31 views
5

Tôi gặp sự cố khi tìm ra các đối số thích hợp của tùy chọn Arg trong RhinoMocks.Rhino Mocks - Sử dụng đúng cách Arg <T> .Ref

Tôi đang cố gắng thử phương pháp MSIRecordGetString có tham số Int32 ref. Hiện tại tôi có:

_Api.RecordGetString(Arg<IntPtr>.Is.Anything, 
        Arg<Int32>.Is.Anything, 
        Arg<StringBuilder>.Is.Anything, 
        ref Arg<Int32>.Ref(???, 0).Dummy); 

Mọi người có thể cho tôi biết điều gì không ??? nên/có thể được thay thế bằng. Tôi biết nó nên là một cái gì đó của loại AbstractConstraint nhưng tôi không chắc chắn những gì là hợp lệ. Gặp khó khăn khi tìm bất kỳ ví dụ nào về cách sử dụng phù hợp.

Chúc mừng.

Trả lời

9

Tôi thực sự đã quen với Moq, nhưng sự hiểu biết của tôi về đối số đầu tiên đó là một ràng buộc, nhưng thấy như bạn không đặc biệt quan tâm đến giá trị (tôi giả định), bạn có thể làm như sau:

ref Arg<Int32>(Is.Anything(), 0).Dummy 

?

+0

Xin chào Matt, cảm ơn câu trả lời. Không thực sự chắc chắn tôi có được những lý do cho sự ràng buộc này mặc dù. Tại sao điều này khác với cú pháp Out không yêu cầu abstractconstraint? –

+0

Có khả năng vì các tham số ngoài phải được gán cho, trong khi các tham số ref không, vì vậy ý ​​tưởng thiết kế là các tham số ref có thể có giá trị đã tồn tại trước để truyền vào. Bạn có thể hạn chế nó vào thời điểm này không? –

+1

@MatthewAbbott Tôi nghĩ '.Ref' bị thiếu giữa' Arg 'và' (Is.Anything(), 0) .Dummy'. Vì vậy, nó nên được 'ref Arg .Ref (Is.Anything(), 0) .Dummy'. –

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