所有,
我对IIS上的WCF有点新,但以前做过一些ASMX Web服务.我的WCF服务已启动并正在运行,但Web服务为我生成的帮助页面具有默认名称,即页面显示:
您已创建了一项服务.
要测试此服务,您需要创建一个客户端并使用它来调用该服务.您可以使用命令行中的svcutil.exe工具执行此操作,语法如下:
svcutil.exe http:// localhost:53456/ServicesHost.svc?wsdl
在标准的ASMX站点中,我将使用方法/类属性为Web服务提供名称和命名空间.当我点击链接时,WSDL有:
<wsdl:definitions name="SearchServices" targetNamespace="http://tempuri.org/"
Run Code Online (Sandbox Code Playgroud)
即不是我的界面中的WCF服务合同名称和命名空间.我假设MEX正在使用某种默认设置,但我想将它们更改为正确的名称.我怎样才能做到这一点?
我正在使用NUnit 2.5.3 TestCaseSource属性并创建工厂来生成我的测试.像这样的东西:
[Test, TestCaseSource(typeof(TestCaseFactories), "VariableString")]
public void Does_Pass_Standard_Description_Tests(string text)
{
Item obj = new Item();
obj.Description = text;
}
Run Code Online (Sandbox Code Playgroud)
我的来源是这样的:
public static IEnumerable<TestCaseData> VariableString
{
get
{
yield return new TestCaseData(string.Empty).Throws(typeof(PreconditionException))
.SetName("Does_Reject_Empty_Text");
yield return new TestCaseData(null).Throws(typeof(PreconditionException))
.SetName("Does_Reject_Null_Text");
yield return new TestCaseData(" ").Throws(typeof(PreconditionException))
.SetName("Does_Reject_Whitespace_Text");
}
}
Run Code Online (Sandbox Code Playgroud)
我需要做的是向变量字符串添加最大长度检查,但是这个最大长度是在被测试类中的合同中定义的.在我们的例子中它是一个简单的公共结构
public struct ItemLengths
{
public const int Description = 255;
}
Run Code Online (Sandbox Code Playgroud)
我找不到任何方法将值传递给测试用例生成器.我尝试过静态共享值,但这些值并没有被提取.我不想将文件保存到文件中,因为每次代码更改时我都需要重新生成此文件.
我想在我的测试用例中添加以下行:
yield return new TestCaseData(new string('A', MAX_LENGTH_HERE + 1))
.Throws(typeof(PreconditionException));
Run Code Online (Sandbox Code Playgroud)
在概念上相当简单,但我发现无法做到的事情.有什么建议?
所有,
掌握ASP.NET MVC.到目前为止,这么好,但这个有点疯了.
我有一个视图模型,其中包含超链接的属性字典,如下所示:
menu =模型变量
Html.ActionLink(Html.Encode(menu.Name), Html.Encode(menu.Action), Html.Encode(menu.Controller), menu.Attributes, null)
Run Code Online (Sandbox Code Playgroud)
问题是"menu.Attributes"的位置需要表单中的对象:
new { Name = "Fred", Age=24 }
Run Code Online (Sandbox Code Playgroud)
据我所知,这个匿名对象实际上是通过反射转换为字典,但是你不能在第一时间将字典传递给它!
为链接生成的Html只显示字典类型.
我到底怎么绕这个?重点是它的一般和控制器可以设置菜单.以前的属性....
基于下面的帖子,我尝试了以下内容:
Html.ActionLink(Html.Encode(menu.Name), Html.Encode(menu.Action), Html.Encode(menu.Controller), new RouteValueDictionary(menu.Attributes), new Dictionary<string,object>())
Run Code Online (Sandbox Code Playgroud)
但这仍然不起作用(我猜代码内部调用带对象的泛型方法?).以上(以及我将字典传递给第4个参数的原始解决方案产生类似于此的HTML:
<a href="/EditRole?Comparer=System.Collections.Generic.GenericEqualityComparer%601%5BSystem.String%5D&Count=1&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.String%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.String%5D">EditDocumentRoles</a>
Run Code Online (Sandbox Code Playgroud)
即它使用反射和工作完全错误...
我是Moq的新手(使用第4版)并且在文档上有点挣扎.
我正在尝试做的是Moq一个采用字节数组并返回一个对象的方法.就像是:
decoderMock.Setup(d => d.Decode(????).Returns(() => tagMock.Object);
Run Code Online (Sandbox Code Playgroud)
???? 是byte []的位置,但是我无法弄清楚如何制作它以便我不关心字节数组中的内容,只返回我已经设置的模拟对象.
Moq.It.IsAny期望通用.
有什么帮助吗?
.net ×1
actionlink ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
mocking ×1
moq ×1
nunit ×1
routevalues ×1
unit-testing ×1
wcf ×1
web-services ×1