Дразнящий DynamoDB в Искре с Мокито - PullRequest
0 голосов
/ 25 октября 2019

Я хочу смоделировать функцию Utilities DynamoDBStatusWrite, чтобы при запуске моей искровой программы она не попадала в DynamoDB.

Ниже приведены мои примеры насмешек и тестов

class FileConversion1Test extends FlatSpec with MockitoSugar with Matchers with ArgumentMatchersSugar with SparkSessionTestWrapper {
  "File Conversion" should "convert the file to" in {

    val utility = mock[Utilities1]
    val client1 = mock[AmazonDynamoDB]
    val dynamoDB1 =mock[DynamoDB]
    val dynamoDBFunc = mock[Utilities1].dynamoDBStatusWrite("test","test","test","test")
    val objUtilities1 = new Utilities1

    FieldSetter.setField(objUtilities1,objUtilities1.getClass.getDeclaredField("client"),client1)
    FieldSetter.setField(objUtilities1,objUtilities1.getClass.getDeclaredField("dynamoDB"),dynamoDB1)

    FieldSetter.setField(objUtilities1,objUtilities1.getClass.getField("dynamoDBStatusWrite"),dynamoDBFunc)

    when(utility.dynamoDBStatusWrite("test","test","test","test")).thenReturn("pass")

    assert(FileConversion1.fileConversionFunc(spark,"src/test/inputfiles/userdata1.csv","parquet","src/test/output","exec1234567","service123")==="passed")

  }
}

MyПрограмма spark не должна пытаться подключить DynamoDB. но пытается подключиться

1 Ответ

0 голосов
/ 25 октября 2019

У вас есть 2 проблемы, для начала тот факт, что вы что-то высмеиваете, не заменяет это автоматически в вашей системе, вам нужно создать программное обеспечение так, чтобы компоненты вводились и, таким образом, в тесте вы предоставляли имитационную версиюих. т. е. fileConversionFunc должен получить другой параметр с соединителем для «Динамо».

Тем не менее, считается плохой практикой издеваться над библиотеками / сторонними классами, что вы должны сделать, это создать свой собственный компонент, который инкапсулируетвзаимодействие с Dynamo, а затем макет вашего компонента, так как это API, которым вы управляете. Вы можете найти подробное объяснение, почему здесь

...