- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
据我所知,答案是否定的。我看到的问题来自Include(params string[])
类中的System.Web.Optimization.Bundle
方法。在内部,这会调用System.Web.Optimization.IncludeDirectory(string, string, bool)
,后者依次使用以下代码:
DirectoryInfo directoryInfo = new DirectoryInfo(
HttpContext.Current.Server.MapPath(directoryVirtualPath));
HttpContext.Current
,但我不知道如何使其
.Server.MapPath(string directoryVirtualPath)
返回非空字符串。由于
DirectoryInfo(string)
构造函数在传递null参数时会引发异常,因此此类测试将始终失败。
最佳答案
对于您,我有个好消息,对于RTM,我们在BundleTable
上添加了一个新的静态属性以启用更多的单元测试:
public static Func<string, string> MapPathMethod;
public class TestVirtualPathProvider : VirtualPathProvider {
private string NormalizeVirtualPath(string virtualPath, bool isDirectory = false) {
if (!virtualPath.StartsWith("~")) {
virtualPath = "~" + virtualPath;
}
virtualPath = virtualPath.Replace('\\', '/');
// Normalize directories to always have an ending "/"
if (isDirectory && !virtualPath.EndsWith("/")) {
return virtualPath + "/";
}
return virtualPath;
}
// Files on disk (virtualPath -> file)
private Dictionary<string, VirtualFile> _fileMap = new Dictionary<string, VirtualFile>();
private Dictionary<string, VirtualFile> FileMap {
get { return _fileMap; }
}
public void AddFile(VirtualFile file) {
FileMap[NormalizeVirtualPath(file.VirtualPath)] = file;
}
private Dictionary<string, VirtualDirectory> _directoryMap = new Dictionary<string, VirtualDirectory>();
private Dictionary<string, VirtualDirectory> DirectoryMap {
get { return _directoryMap; }
}
public void AddDirectory(VirtualDirectory dir) {
DirectoryMap[NormalizeVirtualPath(dir.VirtualPath, isDirectory: true)] = dir;
}
public override bool FileExists(string virtualPath) {
return FileMap.ContainsKey(NormalizeVirtualPath(virtualPath));
}
public override bool DirectoryExists(string virtualDir) {
return DirectoryMap.ContainsKey(NormalizeVirtualPath(virtualDir, isDirectory: true));
}
public override VirtualFile GetFile(string virtualPath) {
return FileMap[NormalizeVirtualPath(virtualPath)];
}
public override VirtualDirectory GetDirectory(string virtualDir) {
return DirectoryMap[NormalizeVirtualPath(virtualDir, isDirectory: true)];
}
internal class TestVirtualFile : VirtualFile {
public TestVirtualFile(string virtualPath, string contents)
: base(virtualPath) {
Contents = contents;
}
public string Contents { get; set; }
public override Stream Open() {
return new MemoryStream(UTF8Encoding.Default.GetBytes(Contents));
}
}
internal class TestVirtualDirectory : VirtualDirectory {
public TestVirtualDirectory(string virtualPath)
: base(virtualPath) {
}
public List<VirtualFile> _directoryFiles = new List<VirtualFile>();
public List<VirtualFile> DirectoryFiles {
get {
return _directoryFiles;
}
}
public List<VirtualDirectory> _subDirs = new List<VirtualDirectory>();
public List<VirtualDirectory> SubDirectories {
get {
return _subDirs;
}
}
public override IEnumerable Files {
get {
return DirectoryFiles;
}
}
public override IEnumerable Children {
get { throw new NotImplementedException(); }
}
public override IEnumerable Directories {
get {
return SubDirectories;
}
}
}
[TestMethod]
public void StyleBundleCustomVPPIncludeVersionSelectsTest() {
//Setup the vpp to contain the files/directories
TestVirtualPathProvider vpp = new TestVirtualPathProvider();
var directory = new TestVirtualPathProvider.TestVirtualDirectory("/dir/");
directory.DirectoryFiles.Add(new TestVirtualPathProvider.TestVirtualFile("/dir/style1.0.css", "correct"));
directory.DirectoryFiles.Add(new TestVirtualPathProvider.TestVirtualFile("/dir/style.css", "wrong"));
vpp.AddDirectory(directory);
// Setup the bundle
ScriptBundle bundle = new ScriptBundle("~/bundles/test");
bundle.Items.VirtualPathProvider = vpp;
bundle.Include("~/dir/style{version}.css");
// Verify the bundle repsonse
BundleContext context = SetupContext(bundle, vpp);
BundleResponse response = bundle.GetBundleResponse(context);
Assert.AreEqual(@"correct", response.Content);
}
关于unit-testing - 是否可以在MVC4中对BundleConfig进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11371710/
如何将以下 BundleConfig.cs 转换为 BundleConfig.json?我正在将 .NET 4.6.2 项目迁移到 NET ASP Core 2。收到以下错误,并尝试进行研究。还试图阅
我的包有问题。文件 .min 未按照 this link 上的报告生成. 我必须为它创建一个测试。这该怎么做? [TestInitialize] public void Setup() { B
我正在我的 ASP MVC 4 站点上使用以下 BundleCollection 项(第一次使用 MVC 4)。我正在尝试加载 jQuery 和 Backbone.js,但根据 Chrome 的控制台
首先,我请大家耐心等待,因为我对 ASP 和 C# 总体来说还是个新手,而且我可能没有像我希望的那样形成大多数概念。 我在使用 BundleConfig.cs 时遇到一些问题。显然它尝试引用的每个模块
我遇到的问题是,如果我对 CSS 或 javascript 文件进行更改,然后将其推送到生产环境,则客户端浏览器不会接受该更改,除非它们执行 ctrl+F5 刷新。我在一个拥有数千名用户的学校系统中工
我最近将 jquery.dataTables nuget 包添加到我的项目中,并且我想在 BundleConfig 中捆绑必要的文件。由于这个包安装在 Scripts 文件夹中的“DataTables
我使用bundleconfig.cs 类向我的应用程序添加一些 jQuery 脚本文件。 bundles.Add(new ScriptBundle("~/bundles/jquery").Includ
我已经阅读了几篇文章,并在互联网上到处寻找,试图找出为什么即使在本地运行时我的 BundleConfig 也无法正常工作。我已经指定了脚本和 css: bundles.Add(new S
我在 MVC4 中使用 c#,我的 CSS 文件有一个奇怪的问题。一切都在本地主机上完美运行。我在 CSS 文件中所做的更改正在起作用。当我将元素发布到托管服务器时出现问题,其中由 BundleCon
我在服务器的 IIS 7 中发布我的 MVC 网站。当我检查页面源代码时,我发现它没有像在我的笔记本电脑中那样正确呈现。 发布到IIS服务器后的页面源码如下: Index - abc System
我正在使用 Tom DuPonts MvcBundler,遵循他的指南:http://www.tomdupont.net/2012/03/configuring-bundles-in-mvc-4.ht
我正在尝试将 BundleConfig.cs 添加到我的 Mvc 项目中。我还添加到 Global.asax BundleConfig.RegisterBundles(BundleTable.Bund
我有一个 ASP.Net MVC 项目,我想实现捆绑,但我在互联网上找到的所有内容都指示我在 App_Start 中打开 BundleConfig.cs -但是这个文件在我的项目中不存在。我在该文件夹
public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/b
我创建了一个新的 ASP.NET 4.5.1 Web 表单项目。 我之前在 MVC 4 中使用过捆绑和缩小。 为什么根目录中有一个bundle.config文件,而App_Start中有一个Bundl
public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/b
我的 BundleConfig.cs 文件如下所示 (CSS): bundles.Add(new StyleBundle("~/Content/css").Include(
我有一个 ASP.Net MVC 项目,我想实现捆绑,但我在互联网上找到的所有内容都指示我在 App_Start 中打开 BundleConfig.cs -但是这个文件在我的项目中不存在。我在该文件夹
我正在努力尝试让 bundle 在 Core 2.0 网络应用程序中工作。我的 bundleconfig.json 文件中有以下内容: [ { "outputFileName": "www
如果我直接引用_layouts页面中的font-awesome.css。它会起作用 但是我在BundleConfig.cs中使用了。图标未显示。 bundles.Add(new StyleBund
我是一名优秀的程序员,十分优秀!