我有一个看起来像这样的图书馆:
class BaseType {
public string MyFunction() {
return "Abc";
}
}
class MyClass {
public MyClass(BaseType baseType) {
Console.WriteLine(myType.MyFunction());
}
}
现在我正在像这样测试它:
class TestingBaseType : BaseType {
public new string MyFunction() {
return "def";
}
}
class Unittests {
public void Test() {
new MyClass(new TestingBaseType());
//Logs "Abc". But I need "def".
}
}
我的真实代码未执行注入的模拟BaseClass
。我如何像这样测试而不编辑生产代码。由于编写单元测试的方式,我不想编辑生产代码。
答案 0 :(得分:1)
如果不能使基类的方法虚拟化,则不要使用派生类并声明一个接口。无论如何,接口是实现有效依赖注入的关键概念。
生产代码:
$existing_array['Last Name']
测试代码:
<?php
$existing_array = ["ROWID" =>[0 => 0,1 => 1,2 => 2],
"First Name" => [0 => "BILLY",1 => "SALLY",2 => "TYLER"],
"Last Name" => [0 => "RAY",1 => "SUE",2 => "TERRIER"],
"Middle Name" =>[0 => "B.",1 => "S.",2 => "T."]];
$expected_array = ['ROWID'=>$existing_array['ROWID'],'First Name'=>$existing_array['First Name'],'Middle Name'=>$existing_array['Middle Name'],'Last Name'=>$existing_array['Last Name']];
print_r($expected_array);