Использовать 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?
Возможно ли это вообще?
Ответы
Ответ 2
var myMockBOC = new Mock<BusinessObjectContext>(null, null);
Это приведет к нулевым значениям для ваших двух параметров.
Другим подходом было бы создать внутренний конструктор, предназначенный только для использования тестов, и использовать InternalsVisibleTo
, чтобы ваша тестовая сборка использовала его, К сожалению, это имеет большой недостаток в том, что если вы подписываете свои сборки, Moq не может использовать конструктор. Предполагается, что это должно быть рассмотрено в версии 4.0 Moq.
Ответ 3
Если вы не хотите использовать параметры вашего конструктора, вы можете передать его методом It.IsAny() во время его насмешки.