我试图测试的一些代码检测平台,例如:
import { Platform } from 'react-native';
...
if (Platform.OS === 'android') {
...
} else {
...
}
Run Code Online (Sandbox Code Playgroud)
有没有一种合理的方法可以用Jest和/或其他东西来模拟这个,所以我可以在一次测试中测试两个分支?
或者是将它解耦并将平台放入例如上下文变量的智能方法?虽然总是感觉重组代码使其更容易测试是一种欺骗.
我正在编写一些代码来执行与当前时间相关的日期和时间计算.在Joda时间,这是通过(Java)构造函数访问的,因为它是一个不可变对象.我需要能够模拟,以便new DateTime()
返回一个特定的常量瞬间,这样我就可以做出明智的测试断言,但只留下所有其他DateTime方法.
这证明是令人讨厌的.Grails mockFor(DateTime, true)
不会让我模拟Java构造函数,但是没有明显或可读的非构造方法来获取Joda时间.
唯一可用的选项似乎涉及低级JVM技术,如JMockit或EasyMock 3类模拟,这是Grails的痛苦.有没有简单/直接的方法来实现这一目标?
我们正在开发一个使用Paypal Express Checkout的应用程序,我们发现我们有两个不同的登陆页面.我们实际上发现了一个表面上看似问题的问题,您是否可以强制PayPal Payments Standard API首先显示信用卡字段?,但有一些差异:
沙盒的一切都很好,我们得到了我们想要的外观(信用卡优先).
在现场网站上,大约50%的时间我们得到了我们想要的外观(信用卡优先).
有时,我们会获得一个更"类似移动设备"的目标网页,信用卡内容完全隐藏在"以客人结账"按钮中,如图所示.
这感觉就像是对我失败的A/B测试.我们正在准确地发送上面链接的问题中的变量,正如我所说,所有这些变量都适用于较旧的目标网页.我知道还有cookie问题,但在这种情况下,即使Paypal无法识别帐户以及何时清除cookie,我们也会看到它.
有人知道我们能做些什么来解决这个问题吗?
我可以根据需要添加代码,但问题似乎是数据而不是逻辑.