使用Java进行集成测试的模拟/存根

时间:2013-09-20 03:30:59

标签: java mocking integration-testing stubbing rest-assured

我正在使用放心确保在我的终端上进行集成测试。其中一个端点依赖于另一个资源(它有条件地调用另一个API)。有没有办法让我删除API调用,以便为这种情况编写测试?

2 个答案:

答案 0 :(得分:0)

假设您的代码通过http在内部调用endpointB,您可以使用https://github.com/katta/fakeresthttps://github.com/azagniotov/stubby4j来存根该API。当您的代码在内部调用另一个api时,它会触发这些存根,它将始终返回虚拟响应。希望这会有所帮助。

答案 1 :(得分:0)

interface IDataProvider {
 string RetrieveData();
}

class StandardDataProvider : IDataProvider {
 public string RetrieveData(){
  // call to API
 }
}

class Program {
 private IDataProvider _dataProvider;

 public Program(IDataProvider provider = null) {
  _dataProvider = provider ?? new StandardProvider();
 }

 public void MethodToTest(){
  var data = _dataProvider.RetrieveData();
  // do your thing
 }
}

在测试中,您可以通过创建自己的IDataProvider对象并使用其数据来模拟数据。

class TestDataProvider : IDataProvider {
 public string RetrieveData(){
  return "my own data";
 }
}

class Test {
 [TestMethod]
 public void TestProgram(){
  var obj = new Program(new TestDataProvider);
  var result = obj.MethodToTest();
  // asserts
 }
}