Dart pub 构建:dart 版本和编译后的 js 版本的一致性

Dart pub build: consistency between dart version and compiled js version

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

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

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

我的问题是:

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

乙。假设我的转换器完全按照它应该做的去做,即删除所有新添加的测试相关代码(当然除了转换器本身),还假设我的应用程序的 js 版本已经在阶段 1 中正常工作, js版本的stage 2也能正常运行吗?

注意:为什么我 运行 测试是 dart 版本而不是 js 版本?因为我不知道js版本不引入测试代码怎么办,即不希望js版本包含测试代码。

谢谢。

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

B:不适用,我猜是因为 A。

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

您应该针对 JavaScript 构建测试,并在您定位的每个浏览器版本中测试您的应用。