所以我读过关于创建工厂,单元测试驱动开发以及它如何在开发调试阶段实际节省时间的内容。我正在为实体框架使用一些库(Entity Spaces,因为我们还没有使用dot-net 4.0)
由于入门似乎对我来说是最困难的部分,我如何为一个像这样的简单方法进行单元测试的对象创建一个工厂?
Public Function castVote(ByVal videoID As Integer, ByVal voterIP As String)
Dim vote As New VoteMachine
vote.VideoID = videoID
vote.VotedOn = Date.Today
vote.VoterAddress = voterIP
vote.Save()
End Function
我现在正在努力引入课程,我已经将我的构造方法公开并像这样共享
Public Shared Function video() As video
Dim thisVideo As New video
Return thisVideo
End Function
然而,当我调用视频时,它给了我“可能的空引用异常”错误,实际上它抛出了一个空引用。如果我的构造函数声明为public和shared,并且正在创建一个新对象,然后返回它,为什么它会给我null异常?
答案 0 :(得分:1)
据我了解,通过单元测试(以及IOC等),您几乎不会在代码中看到“New {object}”,因为这样可以将代码连接到特定生成的对象实例。
相反,你可能有类似的东西:
Dim vote = MyApp.db.NewVoteMachine
MyApp是你的根应用程序,db是你的数据库“层”,而NewVoteMachine实际上是生成实现VoteMachine的对象的“工厂”方法。
所以,如果你需要模拟它,那个方法可能会返回一个模拟的VoteMachine对象而不是真正的对象,但调用代码不会知道它们之间的区别。
这是+真的+简化。