Как выполнить тест BDD для приложения Spring, когда я запускаю интерфейс, используя другой каркас (vuejs), который работает на другом порту - PullRequest
0 голосов
/ 02 мая 2018

Пытаюсь выполнить тесты BDD для моей весенней заявки. Я использую vuejs для внешнего интерфейса, который работает на другом порту. Моя проблема в том, что весеннее приложение не может подключиться к внешнему приложению (возвращает статус 404)

Вот код подключения к внешнему интерфейсу.

import static org.assertj.core.api.Assertions.assertThat;
@ContextConfiguration(classes = MainApplication.class)
@WebAppConfiguration
public class PlantRequestSteps {

List<Plant> plants = new ArrayList<>();

@Autowired
private WebApplicationContext wac;

private WebClient customerBrowser;
HtmlPage customerPage;

@Autowired
PlantHireRepository plantHireRepository;


@Before
public void setUp() {

    customerBrowser = MockMvcWebClientBuilder.webAppContextSetup(wac).build();
}

@After
public void tearOff() {
    plantHireRepository.deleteAll();
    plants.clear();
}

@Given("^the following plants are vailable from this given date$")
public void the_following_plants_are_vailable_from_this_given_date(DataTable table){
    for (Map<String, String> row: table.asMaps(String.class, String.class)){
        plants.add(Plant.of(
                Long.parseLong(row.get("id")), row.get("name"),
                row.get("description"), new BigDecimal(row.get("price")),
                LocalDate.parse(row.get("date"))));
    }
}

@Given("^am on BuildIT's  \"([^\"]*)\" web page$")
public void am_on_BuildIT_s_web_page(String arg1) throws Throwable {
    customerPage = customerBrowser.getPage("http://localhost:8081/");
}
}

1 Ответ

0 голосов
/ 04 мая 2018

Мне удалось решить мою проблему, изменив библиотеку тестирования. Ранее я использовал HtmlUnit , который работает только тогда, когда и передний, и задний конец работают на одном и том же порту (соединенном вместе).

Я использовал селен и хром драйвер, который не зависит от пружинного каркаса

Вот базовая настройка ... .....

public class PlantRequestSteps  {

@Autowired
private WebApplicationContext wac;

private WebDriver driver ;;


static {
 // you should specify the path where you installed your chrome driver
// as the second parameter to this function 
  System.setProperty("webdriver.chrome.driver", "/path/chromedriver");
}


@Before
public void setup() {

    driver = new ChromeDriver();

}

@After
public void tearoff() {

   driver.close();

}

@Given("^ that am on this   \"([^\"]*)\" web page$")
public void that_am_on_this_web_page(String arg1) throws Throwable {
    driver.get("http://localhost:8081/");
}

Также не забудьте добавить библиотеку selenium в дополнение к библиотеке Junit . Я использую Maveen, поэтому я добавил мой в файл pom.xml.

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.11.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.9.1</version>
        <scope>test</scope>
    </dependency>

Наконец, убедитесь, что у вас установлена ​​последняя версия драйвера Chrome (старая версия не работает)

...