Dart pub build:dart版本和编译的js版本之间的一致性

时间:2015-01-21 00:24:56

标签: unit-testing dart dart-polymer

我有一个Polymer Dart应用程序,在开发过程中,它经历了这两个阶段:

阶段1:它工作(功能完整并且构建正常),但没有自动测试。 (因此,为了保证它的行为与它假设的行为相同,我必须手动单击某个按钮,在某些输入字段中键入一些文本,才能看到它的行为正确。)

阶段2:我在应用程序中添加了一些测试代码,使用unittest包来测试应用程序是否正常工作。该测试针对未编译的dart代码,在pub build之前在Dartium中运行。然后我添加了一个变换器lib/transformer.dart,这样,当pub build时,我的变换器将删除应用程序中所有与测试相关的代码,因此Polymer,dart2js和其他变换器将看到他们看到的完全相同的代码在第1阶段,除第1阶段外,没有lib/transformer.dart

我的问题是:

一个。 (对于第1阶段)我应该担心dart版本和编译的js版本之间的一致性吗?即,我可以安全地假设,如果我的代码在dart版本中正常工作,它将在js版本中正常工作吗?

B中。假设我的变压器完全按照它的预期去做,即删除所有新添加的测试相关代码(当然除了变换器本身),也就是说,我的应用程序的js版本已经在第1阶段正常工作,第2阶段的js版本也能正常工作吗?

注意:为什么我在dart版本而不是js版本中运行测试?因为我不知道如何在没有将测试代码引入js版本的情况下,即我不希望js版本包含测试代码。

感谢。

1 个答案:

答案 0 :(得分:1)

<答:是的,你应该担心。 在客户端使用Dart代码主要是为了加快开发速度。最后,您必须确保构建的应用程序正确运行。 通常他们的工作方式相同,但根本无法保证。有很多细微的差别(时间,浏览器差异......)

B:因为我猜不适用。

当您将单元测试代码放在your_package/test中时,您无需担心生产中的测试代码。如果您明确地执行(pub build test),则此代码仅针对JS构建,而不是默认情况下(pub build)。 your_package/libyour_package/webyour_package/bin中的生产代码应包含任何测试代码。 如果是的话,你可能做错了什么。

您应该为JavaScript构建测试,并使用您定位的每个版本中的每个浏览器测试您的应用程序。