Như rwwilden gợi ý, cuộc sống dễ dàng hơn rất nhiều nếu bạn sử dụng API dựa trên luồng thay vì dựa trên tên tệp dựa trên. Sử dụng chế nhạo không phải là quá phù hợp ở đây, IMO; bạn không làm "kiểm tra giao thức" - bạn chỉ muốn một nguồn dữ liệu.
Bạn cũng có thể cung cấp một quá tải mà là một phương pháp hữu ích đơn giản:
public Result ParseXml(string file)
{
using (Stream stream = File.OpenRead(file))
{
return ParseXml(stream);
}
}
Bạn có thể sau đó một cách hợp lý một cách an toàn không thử nghiệm phương pháp - nó có logic không đáng kể trong nó, sau khi tất cả.
Bây giờ bạn có thể thử nghiệm API dòng dựa trên bằng cách sử dụng một chuỗi mã hóa cứng trong mã của bạn, sau đó gọi Encoding.UTF8.GetBytes(xml)
và xây dựng một MemoryStream
xung quanh mảng byte kết quả ... nhưng tôi thường thích sử dụng các file dữ liệu riêng biệt trong dự án thử nghiệm của tôi. Đặt loại nội dung thành "tài nguyên được nhúng" và sau đó sử dụng Assembly.GetManifestResourceStream
để lấy luồng vào tệp thử nghiệm.
Nếu đây thực sự là tệp XML bình thường, bạn có thực sự muốn tự phân tích cú pháp không? Có lý do nào bạn không muốn rời khỏi khuôn khổ đó hay không và thể hiện API của bạn về API DOM, LINQ to XML hoặc XmlReader
?
Nguồn
2010-06-13 07:38:59
Đối với bất cứ ai khác lẫn lộn về cách thức hoạt động của đường dẫn ở đây, nó có vẻ giống như sau: 'Your.Project.Name.SubFolder.FileName.extension'. – crush