2012-10-17 14 views
5

Tôi có một loại và muốn tạo một thể hiện của nó với dữ liệu thử nghiệm.Có cách nào để tạo một thể hiện của một loại có dữ liệu thử nghiệm không?

Tôi biết rằng các khuôn khổ như NBuilder hoặc AutoFixture có thể tạo ra các trường hợp của các loại được biết vào thời gian thiết kế (<T>). Các khuôn khổ đó có thể tạo một cá thể dựa trên một kiểu chỉ được biết trong thời gian chạy (Type) không?

Trên hết tôi muốn làm một cái gì đó như:

var value = Builder.Create(type); 
var constant = Expression.Constant(value, type); 

Trả lời

5

AutoFixture không thực sự hỗ trợ này. Nhưng, theo như tôi biết, không có phương pháp mở rộng thuận tiện để làm điều này.

Mã generic sau:

var value = fixture.CreateAnonymous<MyType>(); 

sẽ trông như thế này với một loại duy nhất được biết trong thời gian chạy:

var context = new SpecimenContext(fixture.Compose()); 
var value = context.Resolve(new SeededRequest(typeof(MyType), null)) 
+0

đó làm việc :) Có thể đăng ký một thực hiện một giao diện cho AutoFixture khi AutoFixture cố gắng tạo một cá thể cho một thuộc tính trong đó kiểu là giao diện? – Rookian

+1

Có, điều đó là có thể. Hãy hỏi nó như một câu hỏi riêng biệt. Tôi sẽ trả lời ở đó. –

+0

Hãy xem: http://stackoverflow.com/questions/12949417/register-an-implementation-of-an-interface-for-autofixture – Rookian

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