Así que tengo esta pequeña y bonita solución MVVM, y las cosas funcionan muy bien. Tengo un modelo de vista para una barra de encabezado que ajusta el icono según el estado de la aplicación, etc. He realizado pruebas de aceptación, el modelo de vista funciona muy bien.Urls de paquete y pruebas unitarias. ¿Problema con mi entorno?
Así que quiero unidad de prueba el comportamiento de este modelo de vista. Creé mi proyecto de pruebas unitarias, agregué una nueva prueba unitaria para el modelo de vista y escribí una prueba de humo simple. (es decir, dadas las dependencias burladas, la instancia de clase).
Bam, sin
Sin embargo, la clase funciona bien cuando se ejecuta normalmente. Tras una inspección más, mi error es como sigue:
TestInitialize threw exception: System.UriFormatException: Invalid URI: Invalid port specified.
Así pues, siguiendo la pila de llamadas llego a la conclusión de que las URL de mi paquete utilizan para cargar los flujos de recursos son las patadas de los errores.
pack://application:,,,/Operations.Shell;component/Media/Images/User_Normal.png
(Nota: Operations.Shell
es el nombre de ensamblado, /Media/Images/User_Normal.png
es la ruta de la imagen/nombre, y esta url paquete funciona en la práctica.)
es la URL paquete que tengo para mi User_Normal.png, el archivo existe, el recurso se empaqueta adecuadamente en el ensamblaje (marcado con reflector).
El problema surge de la clase System.Uri
no ser capaz de interpretar la url paquete. Aquí es donde me estoy perdiendo. ¿Por qué esto no funcionaría en los límites de las pruebas? todas las asambleas de WPF he referido en mi proyecto de prueba:
- WindowsBase
- PresentationCore
- PresentationFramework
- System.Xaml
¿Qué me falta?
actualización
bien por lo que el problema original era que el UriHandler no estaba registrada para las direcciones URL de carga. (Gracias a Julien Lebosquain) Ahora que está fijado todavía está teniendo problemas.
TestInitialize threw exception: System.NotSupportedException: The URI prefix is not recognized.
System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase) System.Net.WebRequest.Create(Uri requestUri) MS.Internal.WpfWebRequestHelper.CreateRequest(Uri uri) System.IO.Packaging.PackWebRequest.GetRequest(Boolean allowPseudoRequest) System.IO.Packaging.PackWebRequest.GetResponse() MS.Internal.WpfWebRequestHelper.GetResponse(WebRequest request) System.Windows.Media.Imaging.BitmapDecoder.SetupDecoderFromUriOrStream(Uri uri, Stream stream, BitmapCacheOption cacheOption, Guid& clsId, Boolean& isOriginalWritable, Stream& uriStream, UnmanagedMemoryStream& unmanagedMemoryStream, SafeFileHandle& safeFilehandle) System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream(Uri baseUri, Uri uri, Stream stream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy, Boolean insertInDecoderCache) System.Windows.Media.Imaging.BitmapImage.FinalizeCreation() System.Windows.Media.Imaging.BitmapImage.EndInit() System.Windows.Media.Imaging.BitmapImage..ctor(Uri uriSource, RequestCachePolicy uriCachePolicy) System.Windows.Media.Imaging.BitmapImage..ctor(Uri uriSource) MyFramework.Resources.b__1(Uri u) MyFramework.Resources.ResourceType`1.Load(String path) Operations.Shell.AppShell.ViewModels.HeaderViewModel..ctor(IEventAggregator eventAggregator, ISecurityService securityService) Tests.Shell.AppShell.TestHeaderViewModel.TestInitialize()
Parece que la URL de paquete de tratar de resolver a algo basado en la web para un paquete url asamblea? Parece que el enrutador del enrutador la solicitud es incorrecta? ¿O me estoy perdiendo algo?
@Downvoter, ¿tiene alguna razón? – Aren