Привет! Я пишу модульный тест, в котором мне необходимо отправить идентификатор строкового ресурса. Как я могу сделать это с помощью mockito. Мой тестовый случай возвращает ноль.
Ожидаемый: Подпись Actual: null
Я думаю, что проблема связана с использованием R.string. Может ли кто-нибудь предложить, что я должен делать, пожалуйста. Должен ли я вызывать функцию init как rendererLocaleContext, а defaultLocaleContext не инициализируются
Мой строковый ресурс
<string name="renderer_signature">Signature</string>
Функция Я пишу контрольный пример для функции getString, которая находится в
class StandardRendererUtility @Inject constructor(app: App, private val rendererLocale: String) {
private val rendererLocaleContext: Context
private val defaultLocaleContext: Context
init {
val configuration = Configuration(app.getApplicationContext().getResources().getConfiguration())
configuration.setLocale(Locale(rendererLocale))
rendererLocaleContext = app.getApplicationContext().createConfigurationContext(configuration)
configuration.setLocale(Locale(DEFAULT_LOCALE))
defaultLocaleContext = app.getApplicationContext().createConfigurationContext(configuration)
}
fun getString(stringId: Int, numOfColumns: Int): String {
val localeString = getStringByLocale(stringId)
if (numOfColumns != NO_OF_COLUMNS_ZERO && rendererLocale != DEFAULT_LOCALE) {
val maxLength = getMaxLength(numOfColumns)
val padding = getPaddingLength(numOfColumns)
return formatString(localeString, maxLength, padding)
} else {
return localeString
}
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private fun getStringByLocale(id: Int): String {
val rendererLocaleString = rendererLocaleContext.getResources().getString(id)
return if (rendererLocaleString.isEmpty()) {
defaultLocaleContext.getResources().getString(id)
} else rendererLocaleString
}
}
Мой юнит тест
@RunWith(MockitoJUnitRunner::class)
class StandardRendererUtilityTest {
@Mock
private lateinit var standardRendererUtility: StandardRendererUtility
@Before
fun setup(){
}
@Test
fun `when noOfColumns are 0 and rendererLocale is en return unformatted string`() {
assertEquals("Signature", standardRendererUtility.getString(R.string.renderer_signature, 0))
}
}