簡體   English   中英

單元測試如何在播放框架(java)中為DynamicForm創建模擬對象

[英]Unit test How to create a mock object for DynamicForm in play framework (java)

我有一個使用formfactory.form().bindFromRequest()的控制器

當我嘲笑它時,它拋出一個空指針異常

bindFromRequest()

IE。

when(formfactoryMock.form()).thenReturn(df.bind(params).bindFromRequest());

如何解決?

以下是我如何模擬它以解決類似問題:

    import play.data.Form;
    import play.data.FormFactory;
    import com.fasterxml.jackson.databind.JsonNode;

    FormFactory mockFormFactory = mock(FormFactory.class);
    Form mockForm = mock(Form.class);
    Form mockDataForm = mock(Form.class);
    when(mockFormFactory.form(any(Class.class)))
            .thenReturn(mockDataForm);
    when(mockDataForm.bind(any(JsonNode.class)))
            .thenReturn(mockForm);
    when(mockForm.hasErrors())
            .thenReturn(false); // I was calling hasErrors, You may not be...
    when(mockForm.get())
            .thenReturn(updatedRecord); // updatedRecord was the model that I needed to pull from the form.

這不是像 OP 詢問的那樣模擬 bindFromRequest() 方法(它模擬了 bind() 方法),但概念應該是相同的,只需替換 when(mockDataForm.bind(any(JsonNode.class)))像 when(mockDataForm.bindFromResult())

(或者我認為)。

無論如何,我無法在任何地方找到任何有關如何執行此操作的示例...所以希望這對其他人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM