Начиная с тестируемого кода - PullRequest
0 голосов
/ 18 апреля 2011

Итак, я читал о создании фабрик и разработке, основанной на модульном тестировании, и о том, как это действительно экономит ваше время на этапе отладки разработки.Я использую некоторые библиотеки для структуры сущностей (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 и создает новый объект, а затем возвращает его, почему он дает мне нулевые исключения?

1 Ответ

1 голос
/ 18 апреля 2011

Насколько я понимаю, при модульном тестировании (и IOC и т. Д.) Вы почти никогда не увидите "новый {объект}" в своем коде, поскольку при этом этот код связывается со специально сгенерированными экземплярами рассматриваемого объекта.

Вместо этого у вас может быть что-то вроде:

Dim vote = MyApp.db.NewVoteMachine

Где MyApp - это ваше корневое приложение, db - это «слой» вашей базы данных, а NewVoteMachine фактически является «фабричным» методом, которыйгенерирует объект, который реализует VoteMachine.

Так что, если вам нужно его смоделировать, этот метод может вернуть смоделированный объект VoteMachine вместо реального, но вызывающий код не будет знать о разнице.

Хотя это + действительно + упрощено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...