Tôi đang viết một số bài kiểm tra đơn vị cho một phương pháp mở rộng mà tôi đã viết trên IPrincipal
. Để hỗ trợ, tôi đã tạo ra một vài lớp helper (một số mã để các thành viên không-thực hiện các giao diện đã được bỏ qua cho ngắn gọn):Làm thế nào để bạn tạo một bài kiểm tra đơn vị cho một giao diện có chứa một thành viên chỉ đọc?
public class IPrincipalStub : IPrincipal
{
private IIdentity identityStub = new IIdentityStub();
public IIdentity Identity
{
get { return identityStub; }
set { identityStub = value; }
}
}
public class IIdentityStub : IIdentity
{
public string Name { get; set; } // BZZZT!!!
}
Tuy nhiên, Name
tài sản trong giao diện IIdentity
là read-only (giao diện IIDentity
chỉ định trình thu thập chứ không phải trình thiết lập cho thuộc tính Tên).
Làm cách nào để đặt thuộc tính Tên trong đối tượng gốc của tôi cho mục đích thử nghiệm nếu giao diện đã xác định nó là thuộc tính chỉ đọc?
Constructor? tức là 'IIdentityStub' sẽ có một hàm tạo tham số nhận tên là tham số. – shahkalpesh
"BZZZT" của bạn có phải là lỗi biên dịch không? Tôi đã có thể biên dịch mẫu của bạn tốt (w/bán dấu hai chấm trên tài sản Identity, đó là). – micahtan
@micahtan: Có, nhưng khi bạn cố gắng viết một bài kiểm tra với nó, và đặt giá trị 'Tên' trong bài kiểm tra, trình biên dịch sẽ phàn nàn rằng' Tên' là chỉ đọc, vì thuộc tính 'Name' trong' IIDentity' không có setter được xác định. –