当规范失败时,我们正试图在rspec内部使用pry-rescue来获取调试器。
现在这种期望失败了:
@RunWith(PowerMockRunner.class)
@SuppressStaticInitializationFor({"javax.faces.component.UIViewRoot", "javax.faces.component.UIComponent", "javax.faces.component.UIComponentBase"})
@PrepareForTest({TestedClass.class, FacesContext.class, UIViewRoot.class, UIComponentBase.class, UIComponent.class, Locale.class})
public class TestedClassTest {
private final FacesContext facesContext = Mockito.mock(FacesContext.class);
private final UIViewRoot uiViewRoot = Mockito.mock(UIViewRoot.class);
private final Locale locale = PowerMockito.mock(Locale.class);
private final TestedClass instance = new TestedClass();
@Before
public void setUp() {
PowerMockito.mockStatic(FacesContext.class);
Mockito.when(FacesContext.getCurrentInstance()).thenReturn(facesContext);
Mockito.when(facesContext.getViewRoot()).thenReturn(uiViewRoot);
Mockito.when(uiViewRoot.getLocale()).thenReturn(locale);
}
/**
* Test of getLocale method, of class TestedClass.
*/
@Test
public void testGetLocale() {
assertEquals(locale, instance.getLocale());
}
}
pry确实打开了,但pry所在的代码点看起来像这样:
expect(page).to have_content('Thanks for signing up!')
这显然不是失败规范的代码。从这里开始,我们只能“向上”。
我们预计会在失败的规范中结束(例如在此指出:Start ruby debugger if rspec test fails)。
为什么上述事情发生了呢?我们做错了什么?
我们使用的是rspec 3.4.0,pry 0.10.3和pry-rescue 1.4.4。