如何在SpringBoot项目的黄瓜测试中注入特定的豆子?

时间:2018-06-24 17:12:41

标签: spring spring-boot cucumber

我的项目结构很简单

    <?php
    if ($_SERVER['REQUEST_METHOD'] == "POST"){

        echo "We have something";


        echo ($_POST['daySelect']); // error here


    }
    else
    {

 ?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Dynamic Select</title>
</head>
<body>

    <form id="theform" style="display: none" method="POST" name="theform" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
     <div id="placeHere"></div>
     <button type="submit">Submit</button>
    </form>

    <button onclick="createSelect()">Create</button>
    <script>
    var elem = document.getElementById('placeHere');
    var daySelect = new Array();
    var theForm = document.getElementById('theform');
    var numSelects = 0;

    var days = ['01','02','03','04','05','06','07','08','09','10',
                            '11','12','13','14','15','16','17','18','19','20',
                            '21','22','23','24','25','26','27','28','29','30',
                            '31'];

    function createSelect()
    {
        numSelects++;
        daySelect.push(document.createElement('select'));
        daySelect[daySelect.length -1].setAttribute('id', 
        daySelect[daySelect.length -1]);
        daySelect[daySelect.length -1].name = daySelect[daySelect.length -1];
        var opt = document.createElement('option');
        opt.text = "Select";
        opt.value = "";
        //myArray[myArray.length - 1];
        daySelect[daySelect.length -1].appendChild(opt);


        for (var i = 0; i < 31; i++)
        {
            var opt = document.createElement("option");
            opt.text = days[i];
            opt.value = days[i];
            //opt.className = i;
            //optarr.push(opt[i]);
            daySelect[daySelect.length -1].appendChild(opt);
        }
        elem.appendChild(daySelect[daySelect.length -1]);
        theForm.style.display = "block";
        //alert("HI");
     }
    </script>
</body>
</html>
<?php
}
?>

这些类的代码如下。

界面. ├── build.gradle ├── {gradle stuff} └── src ├── main │   ├── java │   │   └── my_app │   │   ├── ByeByer.java │   │   ├── Greeter.java │   │   ├── Helloer.java │   │   ├── MyApp.java │   │   └── MyConfig.java │   └── resources │   └── application.properties └── test ├── java │   └── my_app │   └── e2e │   ├── E2EConfig.java │   ├── E2ESteps.java │   └── MyE2ETest.java └── resources └── features └── myFeature.feature

Greeter

从根本上说,它是问候语生成器的虚拟接口。

此接口有两种实现,一个public interface Greeter { public String greet(); } 返回“拜拜”,另一个ByeByer返回“你好”。

Helloermain中:

MyApp

配置如下:

@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(MyApp.class, args);
    }
}

定义在生产中,我们要使用的@Configuration public class MyConfig { @Bean Greeter byebyer(){ return new ByeByer(); } } 实现是生成“再见”消息的实现。

测试部分基本上是这样的情况:

Greeter

步骤定义类为:

Feature: Just a feature

  Scenario: Just a scenario

    Given just a given
    When just a when
    Then just a then

我通过@SpringBootTest( classes = {MyApp.class}) public class E2ESteps implements En{ @Autowired Greeter greeter; public E2ESteps() { Given("^just a given$", () -> { }); When("^just a when$", () -> { }); Then("^just a then$", () -> { assertEquals("Hello", greeter.greet()); }); } } 是因为我想使用与生产中相同的配置,但是我只想覆盖MyApp.class的实现,以便在测试期间返回“ Hello”。 / p>

测试跑步者很简单:

Greeter

如何修改项目,以便使用与生产实例相同的依赖树,但仅覆盖某些bean(在本例中为生产Greeter实现)?

0 个答案:

没有答案