我正在研究Rails 2应用程序,并且缺少依赖注入容器让我想知道依赖关系及其对单元测试的影响。我有以下内容:
控制器
SELECT A, MAX(C) as C, MAX(B) as B
FROM ((SELECT Tbl3.A, Tbl1.C, Tbl1.B
FROM DB1.dbo.Tbl1 LEFT JOIN
DB2.dbo.Tbl3
ON Tbl1.B = Tbl3.A
WHERE ….
) UNION
(SELECT Tbl3.A, Tbl2.C, Tbl2.B
FROM DB1.dbo.Tbl2 LEFT JOIN
DB2.dbo.Tbl3
ON Tbl2.B = Tbl3.A
WHERE …..
)
) t
GROUP BY A;
ClassA的
def some_action
object_a = ClassA.new
object_a.do_something
end
因为ClassA的do_something方法实例化了object_b,所以我无法在单元测试中模拟object_b的行为。解决这个问题的方法是将初始化参数从控制器传递给ClassA,然后在ClassA的初始化中,我可以为ClassB传递所需的参数。
然而,通过这样做,我向控制器揭示了它不应该知道的有关ClassB(它的init参数)的知识。
思想?