小编Sco*_*ard的帖子

单元测试中的错误多于生产代码中的错误

我刚刚开始一个新项目,现在ASP.NET MVC以极其可组合的方式设计,我认为这可能是开始单元测试的好时机.我的大多数代码都是新鲜的,我在编写实际的生产代码之前编写了测试.

不过,我的挫败感是,我花了很多时间来修复测试中的错误,而不是修复我的生产测试中的任何错误.

我的典型工作流程最终会是这样的:

  1. 写一个存根
  2. 写测试
  3. 确保测试失败
  4. 填写存根
  5. 测试仍然失败,因此花一些时间来检查预期和实际输出.
  6. 错误结果是在测试中,而不是实际的代码.修复测试.

如果你考虑一下,这有点令人期待:单元测试涉及手动产生输出,因此容易出错; 用严格的语言和良好的编码实践编写的代码具有非常自动指定的行为.

当然,有些奇怪的时候,我的生产代码是测试失败的真正原因,但它确实相当罕见.

当然,没有理由完全取消单元测试; 有时我完全不相信自己的代码.另一方面,我开始觉得它并不是那么有价值 - 特别是测试第一哲学.

其他人都有这种感觉吗?

tdd unit-testing

12
推荐指数
1
解决办法
1183
查看次数

获取jquery DOM对象的整个HTML的字符串表示形式

我已经看了一下,并且在解决我遇到的一个小问题时遇到了一些困难.

我基本上有一串HTML,我将其转换为JQuery DOM对象,以便我可以使用JQuery的.remove()轻松删除所有具有某个类的元素.也就是说,

var radHtml = editor.get_html();

var jqDom = $(radHtml);

$(".thickbox", jqDom).remove();
$(".thickboxcontent", jqDom).remove();

editor.set_html(this.innerHTML);
Run Code Online (Sandbox Code Playgroud)

注意:HTML是从RADEditor文本编辑器中的内容派生的,因此没有父HTML标记,因此可以如下所示:

<p>This is a header</p>
<p>this is some content followed by a table </p>
<a href="#TB_inline?height=350&amp;width=400&amp;inlineId=myOnPageContent0" class="thickbox">Test Thickbox</a>
<div id="myOnPageContent0" class="thickboxcontent">
<table class="modal">
    <thead>
    </thead>
    <tbody>
        <tr>
            <td>item</td>
            <td>result</td>
        </tr>
        <tr>
            <td>item 1</td>
            <td>1</td>
        </tr>
        <tr>
            <td>item 2</td>
            <td>2</td>
        </tr>
        <tr>
            <td>item 3</td>
            <td>3</td>
        </tr>
    </tbody>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)

以下是jqDom.html()从上面的HTML返回的内容:

"This is a header"
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种简单的方法可以做到这一点 - 有一些html并删除所有具有某个类(但保留其内容)的元素(在本例中为div).JQuery不必使用,但我想.

操作DOM对象很好 - 它将完整的DOM对象作为我遇到问题的字符串完整地获取.

任何帮助都会很有用.谢谢.

jquery dom

7
推荐指数
2
解决办法
4846
查看次数

使用FluentValidation验证2个列表

如果有人有使用[C#] FluentValidation的经验,并对下面的问题有任何想法,任何帮助将不胜感激.

我有2个通用列表(都带有字符串数据类型) - "名称"和"URL".它们都具有相同数量的项目,因此索引项目匹配,即名称[0]与Urls [0]相关联.

我遇到的唯一问题是验证每个列表中的空项.我需要的规则是:

如果某个项目在名称[2]中为空,则Url [2]不应为空.如果Url [2]中的项目为空,则Name [2]不应为空.如果它们都是空的那么我们不想验证,我们想忽略.

注意:我在上面的例子中使用了索引2,但它可以是任何东西

到目前为止,我有:

RuleFor(f => f.Names).Must(d => d.All(s => !String.IsNullOrEmpty(s)))
                .WithMessage("Names cannot be empty.")

RuleFor(f => f.URLs).Must(urls => urls.All(s => !String.IsNullOrEmpty(s)))
                .WithMessage("URLs cannot be empty.")
Run Code Online (Sandbox Code Playgroud)

这检查两个列表中没有项是空的,但是如果另一个列表中的相关项也为空(如果两者都为空,那么我们只想忽略它),我需要能够在一个列表中不验证项为空. .

有任何想法吗?

c# validation

5
推荐指数
1
解决办法
4196
查看次数

可以通过敏捷开发有效地实施单元测试吗?

很快,我将参与一个将使用敏捷项目管理/开发方法的项目,其中包括5周(或大约)2周的冲刺.该项目将使用我在过去发现的DDD设计模式,非常适合单元测试,因此我也非常热衷于将此项目用于此项目.唯一的问题是,我不确定是否可以使用敏捷开发成功实现单元测试:

  • 不断变化的需求的潜力(需求变化,测试中断,测试也需要更新).
  • 时间因素(单元测试可以使开发人员花费更长的时间,如果需求在sprint结束时发生变化,则可能没有太多时间以最佳质量更新测试和生产代码).

我感觉如果/当需求发生变化时(特别是在冲刺结束时)并且在紧迫的期限内,单元测试将成为负担.有人对这件事有什么好的建议吗?

tdd agile unit-testing

5
推荐指数
1
解决办法
1138
查看次数

javascript中的嵌套引号

这里有一点菜鸟问题......

我在表行列表上有一个javascript函数

<tr onclick="ClosePopup('{ScenarioID}', '{Name}');" />
Run Code Online (Sandbox Code Playgroud)

但是,{Name}值有时可以包含字符"'"(单引号).目前出现错误预期:')'因为它有效地结束了早期的javascript函数并破坏了语法.

禁止{Name}值中的单引号影响javascript的最佳方法是什么?

干杯!

javascript quotes

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

标签 统计

tdd ×2

unit-testing ×2

agile ×1

c# ×1

dom ×1

javascript ×1

jquery ×1

quotes ×1

validation ×1