public static void TestGetNugetPackageInfo() { // Arrange var nugetPackageAssembly = GetAssemblyInfo("NugetPackageAssembly", "2.0.5.0", isExplicitlySpecified: false); var inputAssemblies = new[] { GetAssemblyInfo("TestUserAssembly", "2.0.5.0", isExplicitlySpecified: true), nugetPackageAssembly, GetAssemblyInfo("TestUserLibrary", "5.0.0", isExplicitlySpecified: true), }; var targets = new[] { Windows80, Net11, NetStandard16 }; var packageFinder = Substitute.For <IPackageFinder>(); var packageId = "TestNuGetPackage"; var nugetPackageWin80Version = "1.3.4"; // supported version of the package var nugetPackageNetStandardVersion = "10.0.8"; var packagesList = new[] { new NuGetPackageInfo(packageId, new Dictionary <FrameworkName, string>() { { Windows80, nugetPackageWin80Version }, { NetStandard16, nugetPackageNetStandardVersion }, }) }; packageFinder.TryFindPackages(nugetPackageAssembly.AssemblyIdentity, targets, out var packages) .Returns(x => { // return this value in `out var packages` x[2] = packagesList.ToImmutableList(); return(true); }); var engine = new AnalysisEngine(Substitute.For <IApiCatalogLookup>(), Substitute.For <IApiRecommendations>(), packageFinder); // Act var nugetPackageResult = engine.GetNuGetPackagesInfoFromAssembly(inputAssemblies.Select(x => x.AssemblyIdentity), targets).ToArray(); // Assert Assert.Single(nugetPackageResult); Assert.Equal(nugetPackageResult[0].SupportedVersions[Windows80], nugetPackageWin80Version); Assert.Equal(nugetPackageResult[0].SupportedVersions[NetStandard16], nugetPackageNetStandardVersion); // We did not have any packages that supported .NET Standard 2.0 Assert.True(!nugetPackageResult[0].SupportedVersions.TryGetValue(Net11, out var value) || string.IsNullOrEmpty(value)); Assert.Equal(nugetPackageResult[0].AssemblyInfo, nugetPackageAssembly.AssemblyIdentity); }