我的项目结构很简单
<?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
返回“你好”。
Helloer
在main
中:
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实现)?