小编Spo*_*ike的帖子

如何测试MVC控制器的事件

我想测试OnException,OnActionExecuted一个MVC控制器的事件.

如果我像这样使用mock:

        var httpContext = MockRepository.GenerateMock<HttpContextBase>();
        var request = MockRepository.GenerateMock<HttpRequestBase>();

        httpContext.Expect(c => c.Request).Return(request).Repeat.AtLeastOnce();
        request.Expect(r => r.IsAuthenticated ).Return(true).Repeat.AtLeastOnce();


        var controller = new MyController() ;

        controller.ControllerContext = new ControllerContext(httpContext,
                                                             new RouteData(),
                                                             controller);

        var result = controller.Execute() as ViewResult;
Run Code Online (Sandbox Code Playgroud)

...动作方法正在执行,但不会调用事件.

model-view-controller asp.net-mvc controller rhino-mocks

7
推荐指数
1
解决办法
1877
查看次数

如何为Eclipse插件项目设置测试项目

我正在研究一个eclipse插件,我试图从插件中创建另一个测试项目.我这样做的原因是在导出插件时不要让插件依赖于jUnit.但是,在进行测试时,我无法访问Eclipse Plug-in API.每当我尝试添加插件依赖项时,导入列表都是空的.

有谁知道如何将Eclipse插件API导入现有项目?工作区布局目前看起来像这样:

+- com.foo.myplugin
|     |
|     +- JRE System Library
|     |
|     +- Plug-in Dependencies
|     |
|     +- src
|     |
|     +- icons, META-INF, plugin.xml, etc...
|
+- com.foo.myplugin.test
      |
      +- JRE System Library
      |
      +- JUnit 4
      |
      +- src
Run Code Online (Sandbox Code Playgroud)

testing eclipse-plugin

6
推荐指数
1
解决办法
2606
查看次数

在Mark中降价

是否有可用于.NET项目的第三方库,可以将降价文档转换为html服务器端?即我已将Markdown文本存储在数据库中,该数据库在显示时需要转换为html.

我知道WMD,但它只转换客户端.

.net html c# markdown

6
推荐指数
3
解决办法
2518
查看次数

TDD:帮助编写Testable类

我有一个快速的小应用程序,并想尝试使用TDD开发.我从未使用过TDD,甚至在我找到ASP.NET-MVC之前甚至都不知道它是什么.(我的第一个MVC应用程序进行了单元测试,但它们很脆弱,方式耦合,保留太多,并且被放弃了 - 我来学习单元测试!= TDD).

应用背景:

我有一个以字符串形式读入的采购订单的文本转储.我需要解析文本并返回新的采购订单编号,新的行项目编号,旧的采购订单编号,旧的采购订单行号.很简单.

现在我只处理新的采购订单详细信息(数量/行),并有一个这样的模型:

public class PurchaseOrder
{
    public string NewNumber {get; private set;}
    public string NewLine {get; private set;}

    new public PurchaseOrder(string purchaseOrderText)
    {
        NewNumber = GetNewNumber(purchaseOrderText);
        NewLine = GetNewLine(purchaseOrderText);
    }

    // ... definition of GetNewNumber / GetNewLine ...
    //  both return null if they can't parse the text
}
Run Code Online (Sandbox Code Playgroud)

现在我想添加一个方法"IsValid",只有当"NewNumber"和"NewLine"都是非空时才应该为真.所以我想测试它像:

public void Purchase_Order_Is_Valid_When_New_Purchase_Order_Number_And_Line_Number_Are_Not_Null()
{
    PurchaseOrder order = new PurchaseOrder()
    {
        NewNumber = "123456",
        NewLine = "001"
    };

    Assert.IsTrue(order.IsValid);
}
Run Code Online (Sandbox Code Playgroud)

这很容易,但是允许公共setter和无参数构造函数似乎是一个糟糕的折衷方案.所以另一种方法是在构造函数中输入'purchaseOrderText'值,但之后我也在测试'GetNewNumber'和'GetNewLine'的代码.

我有点难以理解如何将其作为一个可测试的类写入,同时试图将其锁定在对模型有意义的方面.这似乎是一个常见的问题,所以我想我只是错过了一个明显的概念.

c# tdd asp.net-mvc unit-testing

6
推荐指数
1
解决办法
842
查看次数

如何在C#中编写事件和事件处理程序?

我一直在尝试记住如何在C#中编写事件和事件处理程序一段时间.每当我想在互联网上引用教程时,他们往往都很冗长.

问题是如何在C#中编写事件和事件处理程序?你有一个代码示例,很容易说明如何写这样的?

.net c# events

6
推荐指数
1
解决办法
6853
查看次数

有没有办法让Trac离线?

我想下载Trac数据库,以便我可以离线查看其票证.反正有没有实现这个目标?即如果我需要离开办公室并随身携带我的笔记本电脑,如何在不连接公司网络的情况下随身携带门票?

我知道Mylyn可以通过它的trac连接器下载和同步票证,但我想要一些独立的查看器.

bug-tracking trac offline issue-tracking

6
推荐指数
1
解决办法
1785
查看次数

如何向.NET项目添加或处理帮助文件?

我的任务是将一个在线帮助文​​件添加到Windows应用程序中.所以我脑子里有几个问题:

  • 如何创建帮助文件以及如何将它们添加到Windows窗体项目?

  • 有没有一种很好的方法在VS解决方案中处理它们?

  • 有没有关于如何做到这一点的教程?

.net winforms

6
推荐指数
1
解决办法
1316
查看次数

如何修改代码以使其符合Demeter法则

public class BigPerformance  
{  
    public decimal Value { get; set; }
}  

public class Performance  
{  
    public BigPerformance BigPerf { get; set; }
}  

public class Category    
{  
    public Performance Perf { get; set; }     
}
Run Code Online (Sandbox Code Playgroud)

如果我打电话:

Category cat = new Category();  
cat.Perf.BigPerf.Value = 1.0;  
Run Code Online (Sandbox Code Playgroud)

我认为这打破了得墨忒耳定律/最少知识原理
如果是这样,如果我有大量的内部类属性,我该如何解决这个问题呢?

c# law-of-demeter

6
推荐指数
2
解决办法
418
查看次数

LINQ中的条件选择(如果为空则选择)

是否有一些"LINQ"方式来条件选择数据,即如果第一个数据为空则从另一个来源中选择?一个例子是,如果你有一个项目的树结构,你想从一个根,或者如果它是空的,从它的孩子那里得到一些资产.

我有以下示例:

IEnumerable<Item> items = ...;
// Item has a Assets property that returns IEnumerable<Asset>
// Item has a SubItems property that returns IEnumerable<Item>
//    i.e. other items with assets in them

// getting assets from a "main" item
var assets = item.Assets.Where(a => HasRelevantAsset(a));

// if there were no relevant assets in the "main" item
if (!assets.Any()) {
    // then reselect from "subitems" assets instead
    assets = item.SubItems.SelectMany(item => 
        item.Assets.Where(a => HasRelevantAsset(a)));
}

// HasRelevantAsset(Asset) is a static method …
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-objects

6
推荐指数
1
解决办法
1194
查看次数

在system.web.optimization中自定义缓存清除

在优化开启时从包中呈现样式时,您可以获得:

<link href="/Content/themes/base/css?v=UM624qf1uFt8dYtiIV9PCmYhsyeewBIwY4Ob0i8OdW81" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

不幸的是,Android浏览器似乎没有加载带有查询字符串的URL.有没有办法在System.Web.Optimization中自定义此字符串?


编辑:

我的问题得到解答,我试图检测用户代理字符串上的android,并用一个查询字符串替换样式表.显然,我有问题,是不是因为查询字符串,它是精缩是造成它不能完全加载样式表在Android股票浏览器中的web字体的CSS版本.

Android股票浏览器无法加载带有转义反斜杠的css内容字符串,这是ASP.NET缩小器的一种解决方法,它会错误地缩小相同的css内容字符串.我最终将图标字体css样式放在它自己的"手工缩小"样式表上.

asp.net-mvc asp.net-optimization system.web.optimization

6
推荐指数
2
解决办法
2381
查看次数