Vì vậy, tôi đang cố gắng trả về một kiểu giả lập từ một kiểu Mocked khác, tôi đã thực hiện một số tiến bộ nhưng tôi bị kẹt ở đây (tên giao diện đã được đơn giản hóa)Giả lập một kiểu trả về từ một kiểu Mocked khác bằng cách sử dụng Moq
Xem xét giao diện IFoo và IFooItem. Calling Thêm vào một loại IFoo, đi qua trong một Ibar trả về một IFooItem
interface IFoo
{
IFooItem Add(IBar bar);
}
interface IFooItem
{
int fooItemId {get; set;}
}
Ngoài ra tôi có một IFooRepository, mà tôi đang cố gắng để sử dụng Moq để chế nhạo vì vậy tôi có thể thử thêm một mục.
Vì vậy,
var mockFooRepository = new Mock<IFooRepository>();
mockFooRepository.Setup(m=> m.Add(It.IsAny<IBar>()))
.Returns(
// What is the correct way to mock properties of a new IFooItem from
// mocked properties of IBar
// essentially a new mocked type of IFooItem that can read from IBar
// so IFooItem.Property = somevalue, IFooItem.Property2 = IBar.SomeProp
);
Tôi có thể nói không làm điều này. Tạo phụ thuộc giữa các đối tượng giả lập có vẻ không khôn ngoan. Chỉ cần mô tả một cách rõ ràng và thiết lập các thuộc tính được tham chiếu bởi lớp dưới thử nghiệm của bạn. Nếu 'IFooItem.Property2' và' IBar.SomeProp' luôn giống nhau, thì chỉ cần đặt chúng giống nhau. – bhamlin