2009-04-28 27 views
7

Tôi thực sự thích khung mq mocking. Tôi đã sử dụng nó trên một số dự án. Thật không may, một trong những khách hàng của tôi đang yêu cầu chúng tôi sử dụng VB.Net. Không phải sở thích của tôi, nhưng hey, .Net là .Net, phải không?Kinh nghiệm sử dụng moq với VB.Net

Tôi nghe nói rằng moq có một số vấn đề với VB. Điều này có đúng không? Vậy, loại rắc rối nào? Tôi hy vọng nó hoạt động tốt vì tính chất độc lập về ngôn ngữ của .Net.

Tôi có nên xem xét sử dụng một số khung mocking khác để sử dụng với VB không?

Trả lời

6

Vấn đề chính của VB.net liên quan đến khuôn khổ mocking là, trái với C#, VB không có các phương thức nặc danh, chỉ các biểu thức Lambda (không có cách nào để khai báo một đại biểu hành động ẩn danh).

Điều này hạn chế nghiêm trọng khả năng. Ngoài ra còn có một vấn đề đã biết với các thuộc tính có tham số.

Ngoài ra, cú pháp của ngôn ngữ cho lambdas không dẫn đến thứ gì đó sạch sẽ như C#, khả năng đọc khôn ngoan (không có ngọn lửa, tôi là người dùng VB và tôi nhớ một số tính năng C# mỗi ngày) sự hấp dẫn cho Moq.

Khung kiểm tra duy nhất tôi biết về điều đó đã làm điều gì đó liên quan đến VB là TypeMock. Họ đã cố gắng thiết kế một cái gì đó pha trộn với cú pháp VB.

+0

Loại sự cố nào có thuộc tính được tham số hóa? –

+0

Tôi đang đề cập đến vấn đề 61: http://code.google.com/p/moq/issues/detail?id=61 Tôi không biết liệu nó có được xử lý hay không kể từ khi nó được nâng lên. –

+3

_ "Trái ngược với C#, VB [.NET] không có các phương thức nặc danh, chỉ các biểu thức Lambda (không có cách nào để khai báo một đại biểu Hành động ẩn danh)." _ - Tôi giả sử với VB.NET 10 (được phát hành với VS 2010 vào tháng 4) 2010), điều này không còn đúng nữa: Bây giờ bạn có thể viết các 'Sub' ẩn danh tại chỗ, thậm chí là nhiều dòng. - Tôi cũng không đồng ý với thuật ngữ "biểu thức lambda" so với "đại biểu hành động ẩn danh". Trong cả C# và VB.NET, các đại biểu vô danh về cơ bản giống với các hàm lambda; chỉ cú pháp có thể hơi khác một chút. – stakx

1

AFAIK Typemock Isolator là công cụ duy nhất có thể mô phỏng đầy đủ VB.NET. Họ đã tạo một API đặc biệt cho điều đó.

+1

yep. ví dụ ở đây: http://site.typemock.com/vbpage/2009/9/10/unit-testing-vbnet.html – RoyOsherove

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