gpt4 book ai didi

dart - 如何在 Dart 中测试私有(private)函数?

转载 作者:行者123 更新时间:2023-12-03 14:49:00 27 4
gpt4 key购买 nike

假设我在 dart 文件中定义了一个私有(private)函数 hello.dart :

_hello() {
return "world";
}

我想在另一个文件中测试它 mytest.dart :

library mytest;

import 'dart:unittest/unittest.dart';

main() {
test('test private functions', () {
expect(_hello(), equals("world"));
}
}

但不幸的是,无法编译测试代码。但我确实需要测试那个私有(private) _hello功能。有什么解决办法吗?

最佳答案

虽然我同意私有(private)方法/类不应成为测试的一部分,但元包确实提供了 @visibleForTesting属性,如果您尝试在其原始库或测试之外使用该成员,分析器会给您一个警告。你可以像这样使用它:

import 'package:meta/meta.dart';

@visibleForTesting
String hello() {
return "world";
}
您的测试现在可以在没有错误或警告的情况下使用它,但如果其他人尝试使用它,他们会收到警告。
同样,关于这样做的智慧是另一个问题 - 通常如果它值得测试,它就是值得公开的东西(或者它将通过你的公共(public)接口(interface)进行测试,无论如何这才是真正重要的)。同时,您可能只想对您的私有(private)方法/类进行严格的测试或测试驱动原则,所以 - Dart 让您这样做。
编辑添加 : 如果你正在开发一个库和你的文件 @visibleForTesting将被导出,您实际上是在添加公共(public) API。有人可以在关闭分析器的情况下使用它(或者只是忽略警告),如果稍后将其删除,则可能会破坏它们。

关于dart - 如何在 Dart 中测试私有(private)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21657315/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com