Tôi biết đây là một câu hỏi và câu trả lời cũ nhưng tôi tình cờ gặp phải vấn đề này đối với một số bài kiểm tra đơn vị. Sau đó tôi đã xảy ra với tôi rằng tôi đã làm một cái gì đó như thế này bằng cách sử dụng Moq (facepalm).
Tôi thích các gợi ý khác cho ImpromptuInterface nhưng tôi đã sử dụng Moq và cảm thấy như nó có một lớn hơn sau (đó là ý kiến và không thực tế) sẽ ổn định hơn và được hỗ trợ lâu hơn.
như vậy cho trường hợp này sẽ là một cái gì đó giống như
public interface ICoOrd
{
int X { get; set; }
int Y { get; set; }
}
public class Sample
{
public void Test()
{
var aCord = new Mock<ICoOrd>();
aCord.SetupGet(c => c.X).Returns(44);
aCord.SetupGet(c => c.Y).Returns(55);
var a = aCord.Object;
}
}
EDIT: chỉ cần thêm một cách khác để thử dây, bắt đầu thực hiện nó theo cách này và như nó tốt hơn một chút.
public void AnotherTest()
{
var aCord = Mock.Of<ICoOrd>(c => c.X == 44 && c.Y == 55);
//do stuff with aCord
}
Tôi chỉ tò mò: bạn đang cố gắng làm điều đó sẽ yêu cầu bạn làm điều này? Nếu bạn biết giao diện, bạn rõ ràng biết chức năng của giao diện, vì vậy bạn có thể triển khai một lớp để cung cấp chức năng đó trong trường hợp bạn không cần loại ẩn danh nữa, vì bạn chỉ có thể tạo một thể hiện của lớp. – xxbbcc
Tại sao bạn muốn bỏ ẩn danh (Bạn không "quan tâm" về thiết kế của nó) vào Giao diện (nghĩa là bạn "quan tâm" về thiết kế của nó)? – gdoron
@gdoron: một giao diện là một điều hữu ích để có, và tôi thấy rằng sử dụng tốt các loại anon (không có LINQ trong trường hợp này) đã đơn giản hóa mã của tôi * và * đã giúp với ý định rõ ràng hơn. Đó là động lực. Chủ yếu là để làm với cấu trúc trung gian. – sgtz