Как проверить импорт / экспорт с Jest?

То, что вы хотите, невозможно без пользовательского UDF. В Scala вы можете сделать что-то вроде этого:

val data = sc.parallelize(Seq(
    """{"userId": 1, "someString": "example1",
        "varA": [0, 2, 5], "varB": [1, 2, 9]}""",
    """{"userId": 2, "someString": "example2",
        "varA": [1, 20, 5], "varB": [9, null, 6]}"""
))

val df = sqlContext.read.json(data)

df.printSchema
// root
//  |-- someString: string (nullable = true)
//  |-- userId: long (nullable = true)
//  |-- varA: array (nullable = true)
//  |    |-- element: long (containsNull = true)
//  |-- varB: array (nullable = true)
//  |    |-- element: long (containsNull = true)

Теперь мы можем определить zip udf:

import org.apache.spark.sql.functions.{udf, explode}

val zip = udf((xs: Seq[Long], ys: Seq[Long]) => xs.zip(ys))

df.withColumn("vars", explode(zip($"varA", $"varB"))).select(
   $"userId", $"someString",
   $"vars._1".alias("varA"), $"vars._2".alias("varB")).show

// +------+----------+----+----+
// |userId|someString|varA|varB|
// +------+----------+----+----+
// |     1|  example1|   0|   1|
// |     1|  example1|   2|   2|
// |     1|  example1|   5|   9|
// |     2|  example2|   1|   9|
// |     2|  example2|  20|null|
// |     2|  example2|   5|   6|
// +------+----------+----+----+

С сырым SQL:

sqlContext.udf.register("zip", (xs: Seq[Long], ys: Seq[Long]) => xs.zip(ys))
df.registerTempTable("df")

sqlContext.sql(
  """SELECT userId, someString, explode(zip(varA, varB)) AS vars FROM df""")
0
задан skyboyer 16 January 2019 в 11:00
поделиться

2 ответа

@mystackrunnethover отчасти правильно, не обязательно получать покрытие этой линии, но на всякий случай:

Я использую эти тесты как «тесты на разумность», чтобы также убедиться, что Jest даже работает.

Распространенной ошибкой является предположение, что imported_thing.toBeTruth() потерпит неудачу, если импорт не сработал. Это не будет - imported_thing будет пустым объектом, что является правдой.

Вот что мы используем:

import Account from '/account';

//describe block

expect(Account).toBeTruthy();

expect(Object.keys(Account).length > 0).toBe(true);

Это, конечно, работает, только если то, что Account действительно имеет свойства (и должно быть). Другой метод заключается в том, чтобы специально проверить свойства, которые вы ожидаете.

0
ответ дан Caleb Jay 16 January 2019 в 11:00
поделиться

Из того, что я вижу из вашего кода, просто импортируйте shipmentsPagination из index.js в тесте:

import defaultExport from '../../actions/';  // import the default export from index.js
const { shipments: shipmentsPagination } = defaultExport; // and use it to get shipmentsPagination
import {
  setFilters,
  removeFilter,
  toggleFiltersModal,
  setCSVDataAction,
} from '../../actions/shipments'; // everything else can come from shipments.js

Импортирование shipmentsPagination из index.js убедится, что строка export в index.js проверяется.

0
ответ дан brian-lives-outdoors 16 January 2019 в 11:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: