Насмешливая R.string в Мокито - PullRequest
0 голосов
/ 16 февраля 2020

Привет! Я пишу модульный тест, в котором мне необходимо отправить идентификатор строкового ресурса. Как я могу сделать это с помощью 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))
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...