【发布时间】:2011-08-26 06:56:30
【问题描述】:
我有这样的课:
public class Product : IProduct
{
static private string _defaultName = "default";
private string _name;
private float _price;
/// Constructor
public Product()
{
_price = 10.0F;
}
public void ModifyPrice(float modifier)
{
_price = _price * modifier;
}
我希望 ModifyPrice 对特定值不执行任何操作,但我也想调用将价格设置为 10 的构造函数。我尝试过这样的操作:
var fake = new SProduct() { CallBase = true };
var mole = new MProduct(fake)
{
ModifyPriceSingle = (actual) =>
{
if (actual != 20.0f)
{
MolesContext.ExecuteWithoutMoles(() => fake.ModifyPrice(actual));
}
}
};
MProduct.Constructor = (@this) => (@this) = fake;
但即使 fake 用好的构造函数很好地初始化,我也不能将它分配给@this。我也尝试类似
MProduct.Constructor = (@this) => { var mole = new MProduct(@this)... };
但这一次我不能调用我的构造函数。我该怎么办?
【问题讨论】:
标签: c# .net unit-testing mocking moles