برنامه نویسی

تست کاراته خود را با Spring Boot DI ارتقا دهید

Summarize this content to 400 words in Persian Lang
چند سالی است که من از خیار برای تست های سطح بالاتر استفاده می کنم و اخیراً کاراته را شروع کرده ام. در حالی که خیار یک ابزار عالی است، من فکر می‌کنم کاراته واقعاً در کاهش حجم دیگ که همراه با تعاریف مرحله‌ای است می‌درخشد و نوشتن سریع تست‌های معنی‌دار را آسان می‌کند، مخصوصاً وقتی صحبت از تست API می‌شود.

برای برنامه های ساده، نوشتن فایل های ویژگی خود در جاوا اسکریپت ساده کافی است. با رشد برنامه و تست های شما، استفاده مجدد از برخی کدهای جاوا می تواند ارزشمند باشد. API های Spring Boot می توانند از تست کاراته سود زیادی ببرند، اما در مورد استفاده از قدرت Spring Boot به طور مستقیم در تست های کاراته چطور؟

چند نمونه از موارد استفاده

در حالی که کاراته از پیکربندی از طریق فایل‌های karate-config.js پشتیبانی می‌کند، برخی ممکن است به جای آن از طریق Spring YAML/properties پیکربندی کنند. این می تواند برای پیکربندی مجدد موارد خارج از کد بازسازی نیز مفید باشد.
برای همگام‌سازی برخی ویژگی‌های پیکربندی Spring Boot بین برنامه‌ها و آزمایش‌ها.
برای تأیید وضعیت پایگاه داده بین تماس های API. مخزن JPA/حبوبات موجودیت را می توان در آزمون های کاراته استفاده کرد.
برخی از لوبیاهای بهار ممکن است به سادگی برای استفاده در آزمایش ها مفید باشند.

نحوه ادغام بهار در کاراته

نمونه کامل پروژه: https://github.com/trey-pero/karate-spring

کاراته را می توان از طریق یک تست ساده JUnit اجرا کرد. برای شروع سیم کشی Spring in، تست JUnit را به عنوان @SpringBootTest تنظیم کنید.

@RequiredArgsConstructor
@SpringBootTest(classes = Main.class)
public class KarateTest {
private final ApplicationContext applicationContext;

@Test
void test() {
ApplicationContextHolder.setApplicationContext(this.applicationContext);

// Since this one JUnit test runs all Karate tests,
// fail the test if any underlying Karate tests fail
assertEquals(0, Runner.path(“classpath:org/tpero”)
.parallel(Optional.ofNullable(System.getProperty(“karate.threads”))
.map(Integer::parseInt)
.orElse(5)
).getFailCount());
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای دسترسی به متن Spring (که دسترسی به تمام دانه ها و پیکربندی را فراهم می کند)، باید در جایی ذخیره شود که کاراته بتواند به صورت ایستا به آن دسترسی داشته باشد.

/**
* Provides Karate static access to the Spring application context.
*/
@UtilityClass
public class ApplicationContextHolder {
@Setter
@Getter
private ApplicationContext applicationContext;
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

از پیکربندی کاراته، با استفاده از نمونه زیر می‌توان به نگهدارنده ثابت دسترسی داشت تا زمینه برنامه را به نقشه پیکربندی جهانی کاراته متصل کند:

/**
* Define common feature file configuration here.
* @returns Common configuration as a JSON object.
*/
function getConfig() {
// Global values
const appContext = Java.type(“org.tpero.ApplicationContextHolder”)
.getApplicationContext()
const environment = appContext.getEnvironment()

return {
appContext: appContext,
environment: environment,

baseUrl: `http://localhost:${environment.getProperty(‘app.server.port’, ‘8080’)}`
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با کد راه‌اندازی بالا، می‌توان به beans و پیکربندی از فایل‌های ویژگی کاراته دسترسی پیدا کرد، که با این نمونه نشان داده شده است که یک API ورود ساده را آزمایش می‌کند که یک توکن JWT را برمی‌گرداند.

Feature: Login
Background:
* url baseUrl
* path ‘/login’
# Load the JWT service bean from Spring DI
* def jwtService = appContext.getBean(‘jwtService’)

Scenario: Login with valid credentials
Given request { username: ‘user’, password: ‘password’ }
When method post
Then status 200
* print response

# Use the JWT service bean to decode the JWT from the response
* def decodedJwt = jwtService.decode(response)
* print decodedJwt
* def decodedBody = decodedJwt.getBody()
* print decodedBody

And match decodedBody[‘sub’] == ‘user’
* def issuedAt = Number(decodedBody[‘iat’])
# Ensure the issuedAt is in the past
And assert issuedAt

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این نمونه نشان می‌دهد که چقدر آسان است که قدرت Spring Boot را در کاراته برای ساختن مجموعه‌های آزمایشی توانمندتر ادغام کنید.

چند سالی است که من از خیار برای تست های سطح بالاتر استفاده می کنم و اخیراً کاراته را شروع کرده ام. در حالی که خیار یک ابزار عالی است، من فکر می‌کنم کاراته واقعاً در کاهش حجم دیگ که همراه با تعاریف مرحله‌ای است می‌درخشد و نوشتن سریع تست‌های معنی‌دار را آسان می‌کند، مخصوصاً وقتی صحبت از تست API می‌شود.

برای برنامه های ساده، نوشتن فایل های ویژگی خود در جاوا اسکریپت ساده کافی است. با رشد برنامه و تست های شما، استفاده مجدد از برخی کدهای جاوا می تواند ارزشمند باشد. API های Spring Boot می توانند از تست کاراته سود زیادی ببرند، اما در مورد استفاده از قدرت Spring Boot به طور مستقیم در تست های کاراته چطور؟

چند نمونه از موارد استفاده

  • در حالی که کاراته از پیکربندی از طریق فایل‌های karate-config.js پشتیبانی می‌کند، برخی ممکن است به جای آن از طریق Spring YAML/properties پیکربندی کنند. این می تواند برای پیکربندی مجدد موارد خارج از کد بازسازی نیز مفید باشد.
  • برای همگام‌سازی برخی ویژگی‌های پیکربندی Spring Boot بین برنامه‌ها و آزمایش‌ها.
  • برای تأیید وضعیت پایگاه داده بین تماس های API. مخزن JPA/حبوبات موجودیت را می توان در آزمون های کاراته استفاده کرد.
  • برخی از لوبیاهای بهار ممکن است به سادگی برای استفاده در آزمایش ها مفید باشند.

نحوه ادغام بهار در کاراته

نمونه کامل پروژه: https://github.com/trey-pero/karate-spring

کاراته را می توان از طریق یک تست ساده JUnit اجرا کرد. برای شروع سیم کشی Spring in، تست JUnit را به عنوان @SpringBootTest تنظیم کنید.

@RequiredArgsConstructor
@SpringBootTest(classes = Main.class)
public class KarateTest {
    private final ApplicationContext applicationContext;

    @Test
    void test() {
        ApplicationContextHolder.setApplicationContext(this.applicationContext);

        // Since this one JUnit test runs all Karate tests,
        // fail the test if any underlying Karate tests fail
        assertEquals(0, Runner.path("classpath:org/tpero")
                .parallel(Optional.ofNullable(System.getProperty("karate.threads"))
                        .map(Integer::parseInt)
                        .orElse(5)
                ).getFailCount());
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای دسترسی به متن Spring (که دسترسی به تمام دانه ها و پیکربندی را فراهم می کند)، باید در جایی ذخیره شود که کاراته بتواند به صورت ایستا به آن دسترسی داشته باشد.

/**
 * Provides Karate static access to the Spring application context.
 */
@UtilityClass
public class ApplicationContextHolder {
    @Setter
    @Getter
    private ApplicationContext applicationContext;
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

از پیکربندی کاراته، با استفاده از نمونه زیر می‌توان به نگهدارنده ثابت دسترسی داشت تا زمینه برنامه را به نقشه پیکربندی جهانی کاراته متصل کند:

/**
 * Define common feature file configuration here.
 * @returns Common configuration as a JSON object.
 */
function getConfig() {
    // Global values
    const appContext = Java.type("org.tpero.ApplicationContextHolder")
        .getApplicationContext()
    const environment = appContext.getEnvironment()

    return {
        appContext: appContext,
        environment: environment,

        baseUrl: `http://localhost:${environment.getProperty('app.server.port', '8080')}`
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با کد راه‌اندازی بالا، می‌توان به beans و پیکربندی از فایل‌های ویژگی کاراته دسترسی پیدا کرد، که با این نمونه نشان داده شده است که یک API ورود ساده را آزمایش می‌کند که یک توکن JWT را برمی‌گرداند.

Feature: Login
  Background:
    * url baseUrl
    * path '/login'
    # Load the JWT service bean from Spring DI
    * def jwtService = appContext.getBean('jwtService')

  Scenario: Login with valid credentials
    Given request { username: 'user', password: 'password' }
    When method post
    Then status 200
    * print response

    # Use the JWT service bean to decode the JWT from the response
    * def decodedJwt = jwtService.decode(response)
    * print decodedJwt
    * def decodedBody = decodedJwt.getBody()
    * print decodedBody

    And match decodedBody['sub'] == 'user'
    * def issuedAt = Number(decodedBody['iat'])
    # Ensure the issuedAt is in the past
    And assert issuedAt 
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این نمونه نشان می‌دهد که چقدر آسان است که قدرت Spring Boot را در کاراته برای ساختن مجموعه‌های آزمایشی توانمندتر ادغام کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا