我目前正在使用angular tutorial作为后端使用Wisdom framework。因此,我使用Fluentlenium作为the wisdom framework doc states运行端到端测试。
我对第3步的测试虽然简单,但没有通过。
可以在github上找到完整的测试:Step03IsImplementedIT
然而,这是令人讨厌的摘录(第30行)
@Test
public void canTestPageCorrectly() {
if (getDriver() instanceof HtmlUnitDriver) {
HtmlUnitDriver driver = (HtmlUnitDriver) getDriver();
if(!driver.isJavascriptEnabled()) {
driver.setJavascriptEnabled(true);
}
Assert.assertTrue("Javascript should be enabled for Angular to work !", driver.isJavascriptEnabled());
}
goTo(GoogleShopController.LIST);
// Et on charge la liste des téléphones
FluentWebElement phones = findFirst(".phones");
assertThat(phones).isDisplayed();
FluentList<FluentWebElement> items = find(".phone");
assertThat(items).hasSize(3); // <-- this is the assert that fails
}
失败消息:
canTestPageCorrectly(org.ndx.wisdom.tutorial.angular.Step03IsImplementedIT) Time elapsed: 2.924 sec <<< FAILURE!
java.lang.AssertionError: Expected size: 3. Actual size: 1.
at org.fluentlenium.assertj.custom.FluentListAssert.hasSize(FluentListAssert.java:60)
at org.ndx.wisdom.tutorial.angular.Step03IsImplementedIT.canTestPageCorrectly(Step03IsImplementedIT.java:33)
从那次失败中,我猜想没有加载角度控制器。
我怎样才能确定它们?我怎样才能进行工作测试?
答案 0 :(得分:0)
原来这个错误并不是预期的......好吧,它是,但是以一种隐藏的方式。
人们可能知道, HtmlUnitDriver
是浏览器的纯Java实现,因此有一些限制。
它的一个限制是Javascript解释,这似乎与角度非常糟糕....
简而言之,解决这个问题的最简单方法是用firefox替换默认驱动程序,这意味着
fluentlenium.browser
设为firefox
firefox.exe
在尝试使用其驱动程序时应该在路径上)然后进行最终测试
assertThat(getDriver()).isInstanceOf(FirefoxDriver.class);
goTo(GoogleShopController.LIST);
FluentList<FluentWebElement> items = find("li");
FluentLeniumAssertions.assertThat(items).hasSize(3);
fill("input").with("nexus");
await();
items = find(".phone");
FluentLeniumAssertions.assertThat(items).hasSize(1);
fill("input").with("motorola");
await();
items = find(".phone");
FluentLeniumAssertions.assertThat(items).hasSize(2);