sbt cómo acceder al directorio base del proyecto en código Scala
Se me ha proporcionado un código que fue creado por un proveedor y parece que su ingeniero ha codificado mucho en las pruebas unitarias.
Tengo una prueba unitaria para una función que devuelve la ruta absoluta completa del informe generado como parte del código como una cadena.
actualmente, la prueba unitaria/afirmación que falla se ve así:
val reportPath = obj.getReportPath()
assert(reportPath.equals("file:/Users/khalid.mahmood/ReportingModule/target/report.csv"))
donde ReportingModule es el nombre del proyecto.
La lógica del código está bien, ya que para mí el valor de la variable reportPath es:
file:/Users/vikas.saxena/coding_dir/ReportingModule/target/report.csv
Dado que tengo el proyecto clonado en un subdirectorio llamado coding_dir
en mi directorio principal, la lógica me parece correcta.
Quiero modificar la afirmación para asegurarme de que el código recoja el directorio base del proyecto por sí mismo y, al buscar en Internet, encontré que sbt tiene base
como el equivalente de project.baseDir (de maven)
en este enlace: link
Sin embargo, los siguientes cambios de código no me han funcionado:
assert(reportPath.equals("""$base""" + "/target/report.csv"))
¿Puedo obtener algunos consejos sobre cómo hacer esto correctamente?
davy.ai
Parece que estás intentando modificar la afirmación en la prueba unitaria para usar el directorio base del proyecto en lugar de codificar el camino.
Según el enlace que proporcionaste, puedes usar la clave
base
de sbt para obtener el directorio base del proyecto. Sin embargo, parece que estás teniendo problemas para usarlo en la afirmación.Un problema con el fragmento de código actual es que se está usando incorrectamente la sintaxis de interpolación de cadenas (
s""
). Para usar la clavebase
en la afirmación, puedes intentar lo siguiente:En este código, estamos usando el ajuste
baseDirectory
de sbt para obtener el directorio base del proyecto, y luego construimos el camino esperado añadiendo/target/report.csv
. Convertimos este camino en una cadena usando.toString()
, y luego lo comparamos con elreportPath
real.Esto asegurará que la afirmación esté utilizando el camino correcto y no esté codificado de forma fija.