Для ясности, написание модульных тестов для метода scanAccount
будет выглядеть примерно так (в псевдокоде):
function when_attributeName_and_notFooHasAttribute_and_accountHasData_returnData() {
// setup mock Account
// setup scan().execAsync() on mockAccount to return some test data
// set attributeName = 'TEST-NAME'
// setup mock empty FooList
// invoke scanAccount()
// assert that you received data as expected
}
function when_notAttributeName_returnUndefined() {
// setup mock Account
// setup scan().execAsync() on mockAccount to return some test data
// set attributeName = undefined
// setup mock empty FooList
// invoke scanAccount()
// assert that the result is undefined
}
function when_attributeName_and_FooHasAttribute_returnUndefined() {
// setup mock Account
// setup scan().execAsync() on mockAccount to return some test data
// set attributeName = 'TEST'
// setup FooList to contain attribute.id
// invoke scanAccount()
// assert that the result is undefined
}
Есть смысл писать такие тесты, но не путайте юнит-тесты с интеграционными. При написании модульных тестов вы не будете проверять получение данных, просто логика вашей scanAccount
реализации верна.
Кстати, я не совсем уверен, каково было намерение этого метода, но похоже, что в нем есть какие-то ошибки ... Так или иначе, просто подумать о том, какие тесты вы должны написать, может помочь вам найти ошибки. Написание тестов сделает это окончательно, и это, безусловно, поможет вам с регрессом в будущем!