【问题标题】:How to test synchronization between rails application and mobile client?如何测试rails应用程序和移动客户端之间的同步?
【发布时间】:2011-05-04 08:54:33
【问题描述】:
我们需要确保我们的网络应用程序和移动客户端正确通信。
从服务器(带有 rspec 测试的 Rails 应用程序)到移动客户端(Ruby 应用程序,具有 mspec 测试框架)和从移动客户端到服务器的通信是双向的。
因此,为了确保同步机制按预期工作,我们需要测试以下内容:
- 服务器正确准备数据。
- 移动客户端请求和获取
正确的数据。
- 手机客户端
准备
要发送到服务器的数据
正确。
- 服务器收到和
解析正确的数据
移动客户端。
- 服务器发送
对移动客户端的响应
一切都好。
- 手机客户端
应采取适当的行动
在设备上。
如何单独测试?
【问题讨论】:
标签:
ruby-on-rails
api
testing
rspec
mspec-ruby
【解决方案1】:
对于所有测试,不要为意外做好准备。从你所知道的开始。出乎意料的事情很快就会抬起它的丑陋脑袋,告诉你还应该测试什么。
如果你把它拆开,你所拥有的实际上很容易测试。这是我的方法:
public final static String SERVER_DATA = "Prepared data from the server";
@Test
public void testServerPreparesDataCorrectly() throws Exception {
... usual setup ...
String actual = server.handleRequest( CLIENT_REQUEST );
assertEquals( SERVER_DATA, actual );
}
public final static String CLIENT_REQUEST = "...";
@Test
public void testClientRequest() throws Exception {
... usual setup ...
String actual = client.getRequestData(...);
assertEquals( CLIENT_REQUEST, actual );
}
@Test
public void testClientResponseProcessing() throws Exception {
... usual setup ...
client.parseServerResponse( SERVER_DATA );
... verify client state ...
}
等等。基本思想是将每个流程步骤的输入和输出放入一个常量,然后运行实现每个预期输入的流程步骤的代码并验证输出。大多数输出也是其他测试的输入。
如果发生变化,您会相应地更新输入/输出。运行测试。并且失败会告诉您必须更新哪些流程步骤。