有没有办法设置和验证使用Moq表达式的方法调用?
第一次尝试是我想让它工作的那个,而第二次尝试是让Assert部件工作的"补丁" (验证部分仍然失败)
string goodUrl = "good-product-url";
[Setup]
public void SetUp()
{
productsQuery.Setup(x => x.GetByFilter(m=>m.Url== goodUrl).Returns(new Product() { Title = "Good product", ... });
}
[Test]
public void MyTest()
{
var controller = GetController();
var result = ((ViewResult)controller.Detail(goodUrl)).Model as ProductViewModel;
Assert.AreEqual("Good product", result.Title);
productsQuery.Verify(x => x.GetByFilter(t => t.Url == goodUrl), Times.Once());
}
Run Code Online (Sandbox Code Playgroud)
测试失败Assert并抛出空引用异常,因为从不调用方法GetByFilter.
如果相反我使用它
[Setup]
public void SetUp()
{
productsQuery.Setup(x => x.GetByFilter(It.IsAny<Expression<Func<Product, bool>>>())).Returns(new Product() { Title = "Good product", ... });
}
Run Code Online (Sandbox Code Playgroud)
测试通过了Assert部分,但这次是验证失败,说它从未被调用过.
有没有办法用特定的表达式设置方法调用而不是使用泛型It.IsAny<>()? …
我有一个视图,我需要检测属性是否使用隐藏输入进行修饰.
我的财产定义为:
[HiddenInput(DisplayValue = false)]
public string UserName{ get; set; }
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的尝试是:
var column.Member = "UserName";
if (ViewData.ModelMetadata.HideSurroundingHtml == true &&
ViewData.Values.Contains(column.Member))
{
column.Visible = false;
}
Run Code Online (Sandbox Code Playgroud)
我已经读过,我可以使用"HideSurroundingHtml"来确定是否不应该显示该属性.
任何想法如何检测这个?
我试图弄清楚是否可以检查表B中是否存在特定记录.如果是,请不要更新表A.
我试过谷歌搜索,但我只找到插入版本,我不确定是否甚至可以使用更新查询.
提前致谢
我正在一个支付平台上工作,并且为响应支付,对侦听器进行了一个简单的GET调用,在查询字符串中带有一些参数:
HTTP://本地主机/ mytest的/侦听TIMECREATED = 2015年8月4日+ 12%3A22%3A27&statoattuale = OK&PREVIOUSSTATE = IN&CURRENTSTATE = payment_approved&tipomessaggio = PAYMENT_STATE&DESCRIZIONE =坎比奥+ DI + STATO&datacreazione = 2015年8月4日+ 12%3A22%3A27&stabilimento = XXXXXX&MerchantNumber = XXXXXX&descrizione =坎比奥+ DI + STATO&OBJECT =付款&TIMEGENERATED = 2015年8月4日+ 12%3A23%3A17&MERCHANTNUMBER = XXXXXX&statoprecedente = IN&商家帐户= XXXXXX&numeroOrdine = myOrderNo&numeroCommerciante = XXXXXX&datagenerazione = 2015年8月4日+ 12%3A23%3A17&ORDERNUMBER = myOrderNo&Stabilimento = XXXXXX&MAC = CaWJiRCxbWH %2FsNFMvHUD2A%3D%3D&MAC = AnsEvRHkvMwRL%2FgehVtnhA%3D%3D
当我检查Request.QueryString我得到的是混乱的参数顺序和情况。好像它们是第一次调整大小写重新排列的。像这样:
TIMECREATED = 2015年4月8日12:22:27&statoattuale = OK&PREVIOUSSTATE = IN&CURRENTSTATE = payment_approved&tipomessaggio = PAYMENT_STATE&DESCRIZIONE =坎比奥DI STATO&DESCRIZIONE …
我想向stackoverflow社区问好.
我几天前才开始使用淘汰赛.
正确知道我正在使用它为我正在开发的CMS制作动态菜单构建器.
这是代码:http://jsfiddle.net/dnlgmzddr/HcRqn/
问题是,当我从选择框中选择一个元素时,输入字段会按照我的预期更新,但是observable不会反映更改.因此,未启用添加按钮.
我错过了什么?我该如何解决?
谢谢.
我找不到模拟ControllerContext.ParentActionViewContext的解决方案.这是我的控制器的代码
[ChildActionOnly]
public ViewResult Menu()
{
string controller = ControllerContext.ParentActionViewContext.RouteData.Values["controller"].ToString();
string action = ControllerContext.ParentActionViewContext.RouteData.Values["action"].ToString();
List menuItems = new List();
...code to populate my list...
return View(menuItems);
}
Run Code Online (Sandbox Code Playgroud)
我想要完成的是在测试中模拟ParentActionViewContext,这样我就可以传递我想要进行模拟的任何控制器和动作.我可以模拟ControllerContext的RouteData,但我无法伪造父控制器之一.也许我错过了一些obviuos.
任何帮助是极大的赞赏.
我用
java.text.DateFormat.getTimeInstance().format(new Date(0))
Run Code Online (Sandbox Code Playgroud)
得到"3:00:00",虽然我的时区是UTC + 04:00(我住在俄罗斯的莫斯科).
没有夏令时生效.为什么结果不是"4:00:00"?
谢谢.
asp.net-mvc ×2
c# ×2
datetime ×1
java ×1
javascript ×1
jquery ×1
knockout.js ×1
mocking ×1
moq ×1
mysql ×1
sql ×1