tôi có các loại sau:Làm thế nào để cấu hình AutoFixture để sử dụng một giá trị enum như hạt giống khi tạo nhiều loại nhất định?
public enum Status
{
Online,
Offline
}
public class User
{
private readonly Status _status;
public User(Status status) { _status = status; }
public Status Status {get {return _status; }}
public string Name {get;set;}
}
Bây giờ, khi thực hiện fixture.CreateMany<User>
Tôi muốn AutoFixture phải trả lại hai Users
, mỗi trạng thái. Tất cả các thuộc tính khác - như Name
- phải được lấp đầy bằng dữ liệu ẩn danh.
Câu hỏi:
Cách định cấu hình AutoFixture để thực hiện việc này?
tôi đã cố gắng sau này: bộ sưu tập
Register rằng tin tức lên các đối tượng
User
:fixture.Register( () => Enum.GetValues(typeof(Status)).Cast<Status>().Select(s => new User(s)));
Vấn đề với phương pháp này là AutoFixture không lấp đầy khác các thuộc tính như
Name
Customize
User
sử dụng một nhà máy và đăng ký một bộ sưu tập có sử dụngfixture.Create
:f.Customize<User>(c => c.FromFactory((Status s) => new User(s))); f.Register(() => Enum.GetValues(typeof(Status)) .Cast<Status>() .Select(s => (User)f.Create(new SeededRequest(typeof(User), s), new SpecimenContext(f))));
đó không làm việc, hoặc. Hạt giống không được sử dụng.
Cảm ơn câu trả lời của bạn. Unfortunatelly, không hoạt động nếu thuộc tính 'Status' không phải là' readonly'. 'Đầu tiên'" không bao giờ "trả về (tôi đợi ít nhất 30 giây). –
Từ khóa 'readonly' không liên quan gì đến nó. Tôi vừa xóa từ khóa 'readonly' khỏi repro của mình, và nó không thay đổi kết quả. –
Tôi không nói về trường sao lưu không chỉ đọc được. Tôi đang nói về * tài sản * không phải là chỉ đọc, tức là 'trạng thái Trạng thái công khai {get; bộ; } '. –