我曾经想过,一旦我'伪造'我的实现来进行测试通过,直到我应该离开这个假实现而不用REAL实现改变它.
如果TDD是关于RED-GREEN-REFACTORING; 如果我通过假装到达绿色,
我应该立即实施明显的实施吗?
或者我应该等到新的测试调用这个伪造的实现并失败,因为它没有按预期的方式运行?(根据我的说法,这听起来像三角测量)
所以我的问题是:
可以伪造('直到你成功!)测试驱动模式存在没有(deliberat或indeliberate)三角测量?
谢谢!
当我使用引用类型时,你能建议我一种方法可以防止我出现这种情况吗?
var someCost = new Cost( Price: new Price(1000, "USD")
, CostType: "Type-A") ;
var candyCost = new Cost();
// Initialize candyCost.Price
candyCost.Price = someCost.Price; //Now candyCost Price is referencing
// price of someCost;
// (.......)
// Some logic and code here
//and I forgot that I was referencing to someCost object's price object
//and I do stupid mistake:
candyCost.Price.Value = 5000; //Now I believe I have updated candyCost price
//but I have also updated someCost!!
Run Code Online (Sandbox Code Playgroud)
其余的故事是关于调试以找出为什么someCost的价格更新.
我想通过这个例子简化问题.我希望你明白我的意思.
问题:你能否建议我一种方法来避免重复这样的错误?更新引用类型的值时的任何设计模式.
如果字段不为NULL,则返回TRUE的正确语法是什么?如果TSQL中为NULL,则返回FALSE?
SELECT -- here return TRUE if table.Code IS NOT NULL. And FALSE otherwise
FROM table
Run Code Online (Sandbox Code Playgroud) 我有完全相同的2个表:t2和t1.
t2有1000行,t1完全为空.
如何从t2中选择前500行并将它们插入到t1?
我在公共类上有一个静态方法.例:
public class MyClass {
public static bool Test() { return true; }
}
Run Code Online (Sandbox Code Playgroud)
我从另一个班级的单元测试中调用它:
MyClass.Test();
Run Code Online (Sandbox Code Playgroud)
当调试器出现时,它抛出:TypeInitializationException:
{"'xxxxx.Yyyyy.MyClass'的类型初始化程序引发了异常."}
内部异常说:
{"值不能为空.\ r \nParameter name:container"}
知道为什么会这样吗?
注意:这是控制台应用程序中的一个类 - 如果它很重要.
我要重写ToString()的IEnumerable<Int32>.
我在考虑使用Extension方法.
但是当我在下面这样做时,它仍然会ToString()打开电话System.Object.当我重命名我的方法时,它会调用我的方法.
由于我的扩展方法是静态类,我无法覆盖.
我怎么能这样做到这一点,我ToString()当我打电话实现被称为.ToString()上List<Int32>的例子吗?
public static class ExtensionMethods
{
public static new string ToString(this IEnumerable<Int32> set)
{
var sb = new StringBuilder();
// Do some modifications on sb
return sb.ToString();
}
}
Run Code Online (Sandbox Code Playgroud) 我有2个实例:
Run Code Online (Sandbox Code Playgroud)foo and bar
他们的类型是:
foo.GetType().ToString()
Run Code Online (Sandbox Code Playgroud)
返回: System.Collections.Generic.List`1 [MyNameSpace.MyClass]
bar.GetType().ToString()
Run Code Online (Sandbox Code Playgroud)
返回: System.Collections.Generic.List`1 [MyNameSpace.MyClass]
当我将它们连接起来时:
var foobar = foo.Concat(bar);
Run Code Online (Sandbox Code Playgroud)
GetType()返回 System.Linq.Enumerable + d__71`1 [MyNameSpace.MyClass]
问题:这是什么意思?不应该是IEnumerable吗?
我是实体框架的新手。
我有一个担忧:
我需要遍历通过 LINQ to Entities 收集的大量数据,该数据以匿名类型组合了来自不同实体的几个属性。
如果我需要一项一项地读取此查询的返回项直到最后,由于集合很大或 EF 隐式使用 SqlDataReader,我是否会面临 OutOfMemory 异常的风险?
(或者我应该使用 EntityDateReader 来确保我按顺序读取 Db (但我猜我必须将查询生成为字符串))
Log.Info中下面的String.Format方法中的\n将"\n"打印为文本而不是开始新行; 为什么它不起作用?任何的想法?我怎样才能使它工作?
Log.Info(String.Format("Some arguments : \n Since : {0}\nBefore: {1}\nLog file name : {2}", since, before,logFileName));
Run Code Online (Sandbox Code Playgroud)
谢谢!
.net ×8
c# ×8
t-sql ×2
concat ×1
exception ×1
expression ×1
insert ×1
java ×1
linq ×1
log4net ×1
methods ×1
null ×1
overriding ×1
parameters ×1
sql ×1
tdd ×1
unit-testing ×1