Подтвердить что ты не робот

Использовать Moq для издевательства над конструктором?

У меня есть такой набор конструкторов:

public BusinessObjectContext()
         : this(CloudStorageAccount.FromConfigurationSetting("DataConnectionString").TableEndpoint.ToString(),
                CloudStorageAccount.FromConfigurationSetting("DataConnectionString").Credentials) {}

public BusinessObjectContext(string dataConnectionString)
         : this(CloudStorageAccount.Parse(dataConnectionString).TableEndpoint.ToString(),
                CloudStorageAccount.Parse(dataConnectionString).Credentials) { }

public BusinessObjectContext(String baseAddress, StorageCredentials credentials) 
         : base(baseAddress, credentials) { } 

Однако при тестировании /Mocking мне нужен объект без каких-либо параметров строки подключения. Как я могу это сделать - предпочтительнее в Moq?

Возможно ли это вообще?

4b9b3361

Ответ 1

Звучит так, как будто у вас есть запах кода - конструктор

Ответ 2

var myMockBOC = new Mock<BusinessObjectContext>(null, null);

Это приведет к нулевым значениям для ваших двух параметров.

Другим подходом было бы создать внутренний конструктор, предназначенный только для использования тестов, и использовать InternalsVisibleTo, чтобы ваша тестовая сборка использовала его, К сожалению, это имеет большой недостаток в том, что если вы подписываете свои сборки, Moq не может использовать конструктор. Предполагается, что это должно быть рассмотрено в версии 4.0 Moq.

Ответ 3

Если вы не хотите использовать параметры вашего конструктора, вы можете передать его методом It.IsAny() во время его насмешки.