我正在努力增加我在Android上的代码覆盖率。但我找不到测试这个演示者的正确方法。onSelectContact会进行一个服务调用,随后my ServiceFactory.GetContactService会进行另一个调用。我怎么能嘲笑这些电话呢?
public class ContactListPresenter {
public void onSelectContact(User user) {
getCorrespondingContactCall(user).enqueue(new Callback <JsonElement>() {
@Override
public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
switch (response.code()) {
case case1:
goToFirstActivity(user, response);
break;
case case2:
goToSecondActivity(user, response);
break;
default: showInvalidInput(user);
break;
}
}
@Override
public void onFailure(Call<JsonElement> call, Throwable throwable) {
if (getView() != null) {
getView().showErrorView();
}
}
});
}
protected Call<JsonElement> getCorrespondingContactCall(final User user) {
return StringUtils.isValidEmail(user.getEmail())
? ServiceFactory.getContactService().checkContactByEmail(user.getEmail())
: ServiceFactory.getContactService().checkContactByPhoneNumber(user.getPhoneNumber());
}
}
如果可以-消除静态调用。例如,通过将ContactService
显式注入到测试中的类:
public class ContactListPresenter {
private final ContactService contactService;
public ContactListPresenter(ContactService contactService) {
this.contactService = contactService;
}
// rest of the code
protected Call<JsonElement> getCorrespondingContactCall(final User user) {
return StringUtils.isValidEmail(user.getEmail())
? contactService.checkContactByEmail(user.getEmail())
: contactService.checkContactByPhoneNumber(user.getPhoneNumber());
}
}
这样,在测试中,您就可以轻松地模拟调用
(调用ContactService
时返回的
<jsonelement>
)。
但是,如果更改代码不是一个选项,则可以使用其他选项:
>
使用Powermock模拟静态调用
通过在测试中创建匿名子类并存根调用GetRecordingContactCall
的结果,利用GetRecordingContactCall
具有Protected
访问权这一事实。例如:
public class ContactListPresenterTest {
@Test
public void test() {
User user = ... // create user for test
ContactListPresenter presenter = new ContactListPresenter() {
@Override
Call<JsonElement> getCorrespondingContactCall(final User user) {
return ... // stub result of the call
}
};
presenter.onSelectContact(user);
// assert expected behavior
}
}
我在Scala上使用Play 2.5,我创建了一个类,可以多次调用外部web服务。 外部Web服务在某些条件下被调用并得到ok或nok的简单响应。如果可以,那么我应该更新内部对象状态,如果可以,我现在什么也不做。 这是我的类,它将String的列表作为参数,并返回要在控制器中处理的对象的Future列表。 是列表类型的列表,但我希望它只是一个简单的响应列表。 1)如何简化和纠正我的代码以获得响应列
下面是一个helper函数的代码 基本上,此方法只需使用HttpRequest和HttpResponse调用endpointURL,endpointURL是web服务,在参数中指定的超时之后,它将只返回200。 现在的问题是,我需要编写一个测试用例来涵盖这个方法,但我不知道如何编写它。。我不知道如何正确模拟httpcallout,因为此方法不返回HttpResponse,而且由于代码现在已冻结,我
像组件一样,服务通常需要依赖,Angular通过服务类的构造函数注入。由于我们在Angular的引导过程之外初始化这些类,我们必须自己显式注入这些依赖。这是通过使用TestBed配置测试模块传回所需的依赖项(如HTTP模块)来实现的。
问题内容: 我对Java单元测试非常陌生,听说Mockito框架对于测试非常有用。 我已经开发了一个REST Server(CRUD方法),现在我想对其进行测试,但是我不知道如何? 我什至不知道该测试程序应该如何开始。我的服务器应该在本地主机上运行,然后在该URL上进行调用(例如,本地主机:8888)? 这是我到目前为止尝试过的方法,但是我很确定这不是正确的方法。 这是方法的代码。 在此测试用
问题内容: 我只想在不引导Angular的情况下测试服务。 我看了一些例子和教程,但是我什么也不会去。 我只有三个文件: myService.js:在这里定义AngularJS服务 test_myService.js:在这里定义服务的Jasmine测试。 specRunner.html:一个具有常规茉莉花配置的HTML文件,在其中导入了前两个其他文件以及茉莉花,Angularjs和angular-
我有一个服务器,用Java编写的,那是我的应用程序,我想在上面运行一些测试。我正在使用gradle来管理依赖项和构建任务等,所以我也想在这方面使用它。我需要启动服务器,然后运行我的单元测试,这会对它发出一堆HTTP请求,然后在测试完成后,理想情况下甚至关闭服务器。所以我尝试在build.gradle中添加(jettyRunWar是运行服务器的工具),但我想这太简单了,因为从不从jettyRunWa