我在一个类项目中使用 jQuery 来捕获表单提交并向表单添加一些额外的数据。从功能上讲,该系统工作正常。没有错误,所有输出都符合预期。我们还需要使用 HTTPUnit 来测试我们的系统。在我的测试中(不久之后),我可以找到表格,发送测试值并提交。然后,我进行检查以在网页上查找预期结果。我没有得到这个声明。就像我之前说的,我可以进入并手动运行这个精确的测试并获得我想要的输出,但是通过 httpunit,我会失败。
这是html表单。
<form action="" method="post" id="cc_form">
<label for="cardType">Card Type:</label>
<select name="cardType">
<option value="Visa">Visa</option>
<option value="Mastercard">Mastercard</option>
<option value="Discover">Discover</option>
<option value="American Express">American Express</option>
</select><br><br>
<label for="cardNumber">Card Number:</label>
<input type="text" name="cardNumber"/><br><br>
<label for="cvvCode">CVV Code:</label>
<input type="text" name="cvvCode"/><br><br>
<label for="cardHolder">Card Holder Name:</label>
<input type="text" name="cardHolder"/><br><br>
<label for="address">Billing Address:</label>
<input type="text" name="address"/><br><br>
<input type="submit" class="subsub" id="submitcc" value="Submit" /><br><br>
</form>
这是我正在使用的适用 jQuery。
$('#cc_form').submit(function() {
$(this).append('<input type="hidden" name="payment_type" value="cc_form" /> ');
return true;
});
这是针对此问题失败的 httptest(其中之一)
public void testIncorrectCVVCode() throws Exception{
WebConversation wc = login("31", "pw");
WebResponse wr = wc.getCurrentPage();
wr = wr.getLinkWith("Billing Statements").click();
wr = wr.getLinkWith("Oct 10, 2005").click();
wr = wc.getCurrentPage();
Button btn = (Button)wr.getElementWithID("ccBtn");
btn.click();
wr = wc.getCurrentPage();
WebForm form = wr.getFormWithID("cc_form");
form.setParameter("cardHolder", "steven");
form.setParameter("address", "2 forrest dr");
form.setParameter("cardType", "Visa");
form.setParameter("cardNumber", "2323232323232323");
form.setParameter("cvvCode", "23");
wr = form.submit();
//wr = wc.getCurrentPage();
assertTrue(wr.getText().contains("Invalid Card CVV"));
}
欢迎任何帮助。
PS。这是我从 httpunit 中得到的失败
junit.framework.AssertionFailedError
at junit.framework.Assert.fail(Assert.java:55)
at junit.framework.Assert.assertTrue(Assert.java:22)
at junit.framework.Assert.assertTrue(Assert.java:31)
at junit.framework.TestCase.assertTrue(TestCase.java:201)
at edu.ncsu.csc.itrust.http.BillingTest.testIncorrectCVVCode(BillingTest.java:244)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at junit.framework.TestCase.runTest(TestCase.java:176)
at junit.framework.TestCase.runBare(TestCase.java:141)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:129)
at junit.framework.TestSuite.runTest(TestSuite.java:255)
at junit.framework.TestSuite.run(TestSuite.java:250)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)