作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 MVC3 Web 项目中的 Controller 编写单元测试,但是当我的测试尝试访问这样的资源时会抛出异常:
return Index(Resources.Strings.MyStringResource);
.resx
文件标题为
Strings
.
HttpContextBase
实现单元测试的库功能,所以我想知道如何使用 Moq 库来访问 App_GlobalResource。
最佳答案
你不能,至少不能直接。从资源 (.resx) 文件生成的强类型类公开静态方法,而不是实例方法。
因此,它们不能实现接口(interface)方法,也不是虚拟的; Moq要求至少满足其中一个条件才能创建模拟。
为了解决这个问题,您将创建一个抽象,就像其他任何东西一样:
public interface IResources
{
string MyStringResource { get; }
}
Index
方法。该实现可能如下所示:
public class ResourcesWrapper : IResources
{
public string MyStringResource
{
get
{
return Resources.Strings.MyStringResource;
}
}
}
IResources
的模拟。接口(interface),并将其传递给您的 Controller ,如下所示:
// Create the mock.
var mock = new Mock<IResources>();
// Setup the property.
mock.SetupProperty(m => m.MyStringResource, "My Mocked Value");
// Pass the object somewhere for use.
Assert.AreEqual(mock.Object.MyStringResource, "My Mocked Value");
关于.net - 你如何起订一个生活在 App_GlobalResource 中的 .resx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13013075/
我正在尝试使用 Java6(JAR) 解决以下关于 spoj 的问题:- 你的程序是使用蛮力方法来找到生命、宇宙和一切的答案。更准确地说......从输入到输出重写小数字。读入数字42后停止处理输入。
我是一名优秀的程序员,十分优秀!