在 Play 框架 2.1.4 中将 Helpers.callAction 与没有静态方法的控制器一起使用
Posted
技术标签:
【中文标题】在 Play 框架 2.1.4 中将 Helpers.callAction 与没有静态方法的控制器一起使用【英文标题】:using Helpers.callAction with controllers without static methods in Play framework 2.1.4 【发布时间】:2013-09-23 17:19:40 【问题描述】:我正在使用带有 Guice 的 play framework 2.1.4 向我的控制器注入依赖项。
在我的测试中,我想致电Helpers.callAction
。虽然controllers.routes.ref.Mycontroller
不知道我的行为,因为它们不是静态的。
有没有办法让HandlerRef
以某种方式传递给callAction
?
谢谢
【问题讨论】:
【参考方案1】:我们最终使用了 Jukito https://code.google.com/p/jukito/
它需要清理(我们可以为此创建自己的助手),但这是基本的想法
@RunWith(JukitoRunner.class)
public class AuthenticationTest
@Inject
private Authentication authentication;
private String username = "username";
private String password = "password";
@Before
public void setupMocks(UserDao mockedUserDao) throws RecordNotFoundException
ObjectNode json = Json.newObject();
json.put("username", username);
json.put("password", password);
User mockedUser = mock(User.class);
when(mockedUser.getEmail()).thenReturn("email@test.com");
Http.RequestBody mockedBody = mock(Http.RequestBody.class);
when(mockedBody.asJson()).thenReturn(json);
Http.Request mockedRequest = mock(Http.Request.class);
when(mockedRequest.body()).thenReturn(mockedBody);
when(mockedUserDao.findByEmailAndPassword(anyString(), anyString())).thenReturn(mockedUser);
Http.Context.current.set(new Http.Context((long) 1, mock(play.api.mvc.RequestHeader.class),
mockedRequest, new HashMap<String, String>(), new HashMap<String, String>(),
new HashMap<String, Object>()));
@Test
public void loginTest(UserDao mockedUserDao) throws RecordNotFoundException
//Arrange
FakeApplication app = Helpers.fakeApplication();
start(app);
ObjectNode json = Json.newObject();
json.put("username", username);
json.put("password", password);
//act
authentication.login();
stop(app);
//Assert
verify(mockedUserDao).findByEmailAndPassword(anyString(), anyString());
assertEquals(200, status(result));
【讨论】:
使用 scala 版本会容易得多...github.com/typesafehub/play-guice/blob/master/test/controllers/…以上是关于在 Play 框架 2.1.4 中将 Helpers.callAction 与没有静态方法的控制器一起使用的主要内容,如果未能解决你的问题,请参考以下文章
Sonar Cocos Helper - 在 Android Studio 上设置 Google Play 游戏服务
在 Play 商店中将 Flutter 应用程序从旧版本更新到新版本
如何在 Android 中将 Arraylist 插入 sqlite?
在 Android SDK 29 中将“play-services-base”17.1.0 更新到 17.2.0 后,应用程序不断崩溃