Mockito এবং KotlinTest ব্যবহার করে Mocking
Mocking হলো টেস্টিংয়ের একটি প্রযুক্তি যা একটি অবজেক্টের আচরণ প্রতিস্থাপন করতে ব্যবহার করা হয়। এটি সাধারণত ইউনিট টেস্টে ব্যবহৃত হয়, যেখানে আপনি একটি ক্লাসের নির্দিষ্ট অংশের জন্য নির্ভরশীলতাকে বিচ্ছিন্ন করতে চান। কটলিনে Mockito এবং KotlinTest ব্যবহার করে Mocking করা যেতে পারে। নিচে এই দুটি লাইব্রেরির ব্যবহার নিয়ে বিস্তারিত আলোচনা করা হলো।
১. Mockito সেটআপ
Mockito হলো একটি জনপ্রিয় ফ্রেমওয়ার্ক যা জাভা এবং কটলিনের জন্য ব্যবহৃত হয়। এটি মক অবজেক্ট তৈরি করতে সাহায্য করে, যা টেস্টিংয়ের সময় সহজে ব্যবহার করা যায়।
i) Mockito Dependency যুক্ত করা
Gradle এর build.gradle.kts ফাইলে Mockito এবং KotlinTest এর ডিপেন্ডেন্সি যুক্ত করুন:
dependencies {
testImplementation("org.mockito:mockito-core:5.0.0")
testImplementation("io.kotest:kotest-runner-junit5:5.4.2") // KotlinTest
}
২. Mockito ব্যবহার করে Mocking
উদাহরণ: Mockito দিয়ে মক অবজেক্ট তৈরি করা
import org.junit.jupiter.api.Test
import org.mockito.Mockito.*
import kotlin.test.assertEquals
// Sample service interface
interface UserService {
fun getUser(id: String): String
}
class UserServiceTest {
@Test
fun testGetUser() {
// Create a mock object
val userService = mock(UserService::class.java)
// Define behavior for the mock
`when`(userService.getUser("123")).thenReturn("Alice")
// Use the mock
val user = userService.getUser("123")
// Assertions
assertEquals("Alice", user)
}
}
ব্যাখ্যা:
- এখানে
UserServiceএকটি ইন্টারফেস যা একটিgetUserমেথড রয়েছে। mock(UserService::class.java)ব্যবহার করেUserServiceএর একটি মক অবজেক্ট তৈরি করা হয়েছে।whenব্যবহার করেgetUserমেথডের জন্য আচরণ নির্ধারণ করা হয়েছে, যাতে এটি"Alice"ফেরত দেয়।
৩. KotlinTest ব্যবহার করে Mocking
KotlinTest (বর্তমানে Kotest হিসাবে পরিচিত) হল কটলিনের জন্য একটি টেস্টিং ফ্রেমওয়ার্ক যা বিভিন্ন টেস্টিং স্টাইল এবং আর্গুমেন্টস সহ টেস্টিং সমর্থন করে।
উদাহরণ: Kotest দিয়ে মক অবজেক্ট তৈরি করা
import io.kotest.core.spec.style.StringSpec
import io.kotest.matchers.shouldBe
import io.mockk.every
import io.mockk.mockk
// Sample service interface
interface UserService {
fun getUser(id: String): String
}
class UserServiceTest : StringSpec({
"should return user name" {
// Create a mock object
val userService = mockk<UserService>()
// Define behavior for the mock
every { userService.getUser("123") } returns "Alice"
// Use the mock
val user = userService.getUser("123")
// Assertions
user shouldBe "Alice"
}
})
ব্যাখ্যা:
- এখানে
mockkফাংশন ব্যবহার করেUserServiceএর একটি মক অবজেক্ট তৈরি করা হয়েছে। everyফাংশন ব্যবহার করেgetUserমেথডের জন্য আচরণ নির্ধারণ করা হয়েছে, যাতে এটি"Alice"ফেরত দেয়।shouldBeব্যবহার করে আউটপুট যাচাই করা হয়েছে।
উপসংহার
Mockito এবং KotlinTest (Kotest) উভয়ই কটলিনে Mocking এর জন্য কার্যকর টুল। Mockito ব্যবহার করে সাধারণত Java-style mocking হয়, যেখানে Kotest ব্যবহার করে একটি কটলিনে মূলত আরও স্বচ্ছন্দ এবং কার্যকরী উপায়ে Mocking করা যায়। এই টুলগুলো ব্যবহার করে আপনি ইউনিট টেস্টে নির্ভরশীলতা নিয়ন্ত্রণ এবং কোডের মান যাচাই করতে পারেন।
Read more