- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在对共享首选项运行一些单元测试。我正在制作一个帮助程序类,这样我们就不必一遍又一遍地编写相同的代码。
无论我尝试什么,我总是一遍又一遍地得到同样的错误。您将找到我正在测试的类、测试类和堆栈跟踪。
我希望这是我忘记的蠢事。我尝试了这些资源:
shared_preferences_helper_test.dart:
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:shoppaworld_client_app/shared_preferences_helper.dart';
// at the moment testing
void main() {
SharedPreferencesHelper sharedPreferencesHelper;
setUpAll(() {
sharedPreferencesHelper = SharedPreferencesHelper();
const MethodChannel('plugins.flutter.io/shared_preferences')
.setMockMethodCallHandler((MethodCall methodCall) async {
if (methodCall.method == 'getAll') {
return <String, dynamic> {
'test-string' : 'string-value',
'test-int' : 420,
'test-bool' : true
}; // set initial values here if desired
}
return null;
});
});
test('test if the testing works', () async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
sharedPreferences.setString('test-string-infunction', 'wow');
var value = sharedPreferences.getString('test-string-infunction');
print(value);
expect(value, 'wow');
});
group('unit test 1: read shared preferences', () {
test('shared preferences string', () async {
String value = await sharedPreferencesHelper.readValueFromKey("test-string");
print(value);
expect(value, 'string-value');
});
test('shared preferences empty', () async {
var value = await sharedPreferencesHelper.readValueFromKey("does_not_exist");
expect(value, null);
});
});
group('unit test 2: write shared preferences', () {
test('shared preferences string', () async {
var originalValue = 'test';
var value = await sharedPreferencesHelper.writeValueToKey("test-string", valueString: originalValue);
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
expect(sharedPreferences.getString('test-string'), originalValue);
});
test('shared preferences int', () async {
var originalValue = 420;
var value = await sharedPreferencesHelper.writeValueToKey("test-int", valueInt: originalValue);
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
expect(sharedPreferences.getInt('test-int'), originalValue);
});
test('shared preferences bool', () async {
var originalValue = true;
var value = await sharedPreferencesHelper.writeValueToKey("test-bool", valueBool: originalValue);
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
expect(sharedPreferences.getBool('test-bool'), originalValue);
});
});
}
shared_preferences_helper.dart:
import 'dart:async';
import 'package:shared_preferences/shared_preferences.dart';
// this class is meant to relieve developers from boilerplate code
class SharedPreferencesHelper {
Future<dynamic> readValueFromKey(String key) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
return sharedPreferences.get(key) ?? null;
}
writeValueToKey(String key, {String valueString, bool valueBool, int valueInt}) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
if(valueString != null){
sharedPreferences.setString(key, valueString);
}
if(valueBool != null) {
sharedPreferences.setBool(key, valueBool);
}
if(valueInt != null) {
sharedPreferences.setInt(key, valueInt);
}
}
}
堆栈跟踪:
Testing started at 12:10 ...
/home/geordy/SoftwareDevelopment/flutter/flutter_linux_v1.2.1-stable/flutter/bin/flutter --no-color test --machine test/shared_preferences_helper_test.dart
dart:core _AssertionError._throwNew
package:shared_preferences/shared_preferences.dart 33:16 SharedPreferences.getInstance
===== asynchronous gap ===========================
dart:async _AsyncAwaitCompleter.completeError
package:shared_preferences/shared_preferences.dart SharedPreferences.getInstance
===== asynchronous gap ===========================
dart:async _asyncThenWrapperHelper
package:shared_preferences/shared_preferences.dart SharedPreferences.getInstance
test/shared_preferences_helper_test.dart 30:67 main.<fn>
'package:shared_preferences/shared_preferences.dart': Failed assertion: line 33 pos 16: 'key.startsWith(_prefix)': is not true.
dart:core _AssertionError._throwNew
package:shared_preferences/shared_preferences.dart 33:16 SharedPreferences.getInstance
===== asynchronous gap ===========================
dart:async _AsyncAwaitCompleter.completeError
package:shared_preferences/shared_preferences.dart SharedPreferences.getInstance
===== asynchronous gap ===========================
dart:async _asyncThenWrapperHelper
package:shared_preferences/shared_preferences.dart SharedPreferences.getInstance
package:shoppaworld_client_app/shared_preferences_helper.dart 20:67 SharedPreferencesHelper.readValueFromKey
'package:shared_preferences/shared_preferences.dart': Failed assertion: line 33 pos 16: 'key.startsWith(_prefix)': is not true.
dart:core _AssertionError._throwNew
package:shared_preferences/shared_preferences.dart 33:16 SharedPreferences.getInstance
===== asynchronous gap ===========================
dart:async _AsyncAwaitCompleter.completeError
package:shared_preferences/shared_preferences.dart SharedPreferences.getInstance
===== asynchronous gap ===========================
dart:async _asyncThenWrapperHelper
package:shared_preferences/shared_preferences.dart SharedPreferences.getInstance
package:shoppaworld_client_app/shared_preferences_helper.dart 20:67 SharedPreferencesHelper.readValueFromKey
'package:shared_preferences/shared_preferences.dart': Failed assertion: line 33 pos 16: 'key.startsWith(_prefix)': is not true.
dart:core _AssertionError._throwNew
package:shared_preferences/shared_preferences.dart 33:16 SharedPreferences.getInstance
===== asynchronous gap ===========================
dart:async _AsyncAwaitCompleter.completeError
package:shared_preferences/shared_preferences.dart SharedPreferences.getInstance
===== asynchronous gap ===========================
dart:async _asyncThenWrapperHelper
package:shared_preferences/shared_preferences.dart SharedPreferences.getInstance
package:shoppaworld_client_app/shared_preferences_helper.dart 25:67 SharedPreferencesHelper.writeValueToKey
'package:shared_preferences/shared_preferences.dart': Failed assertion: line 33 pos 16: 'key.startsWith(_prefix)': is not true.
dart:core _AssertionError._throwNew
package:shared_preferences/shared_preferences.dart 33:16 SharedPreferences.getInstance
===== asynchronous gap ===========================
dart:async _AsyncAwaitCompleter.completeError
package:shared_preferences/shared_preferences.dart SharedPreferences.getInstance
===== asynchronous gap ===========================
dart:async _asyncThenWrapperHelper
package:shared_preferences/shared_preferences.dart SharedPreferences.getInstance
package:shoppaworld_client_app/shared_preferences_helper.dart 25:67 SharedPreferencesHelper.writeValueToKey
'package:shared_preferences/shared_preferences.dart': Failed assertion: line 33 pos 16: 'key.startsWith(_prefix)': is not true.
dart:core _AssertionError._throwNew
package:shared_preferences/shared_preferences.dart 33:16 SharedPreferences.getInstance
===== asynchronous gap ===========================
dart:async _AsyncAwaitCompleter.completeError
package:shared_preferences/shared_preferences.dart SharedPreferences.getInstance
===== asynchronous gap ===========================
dart:async _asyncThenWrapperHelper
package:shared_preferences/shared_preferences.dart SharedPreferences.getInstance
package:shoppaworld_client_app/shared_preferences_helper.dart 25:67 SharedPreferencesHelper.writeValueToKey
'package:shared_preferences/shared_preferences.dart': Failed assertion: line 33 pos 16: 'key.startsWith(_prefix)': is not true.
最佳答案
我觉得
if (methodCall.method == 'getAll') {
return <String, dynamic> {
'test-string' : 'string-value',
'test-int' : 420,
'test-bool' : true
}; // set initial values here if desired
需要
if (methodCall.method == 'getAll') {
return <String, dynamic> {
'flutter.test-string' : 'string-value',
'flutter.test-int' : 420,
'flutter.test-bool' : true
}; // set initial values here if desired
关于unit-testing - Flutter: 'package:shared_preferences/shared_preferences.dart':断言失败:第 33 行 pos 16: 'key.startsWith(_prefix)':不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55100871/
我使用的是 Java 版本 1.8.0_31。 我正在尝试使用 FileVisitor 接口(interface)递归访问目录树。该程序应打印 C:/books 中文件名以“Ver”开头的所有文件的名
我有一个 Java 方法,它接受类型的参数 interface Function2 { TR apply(TP1 p1, TP2 p2) } 以及像这样的 Java 方法 boolean cont
我有一个给我带来麻烦的功能。下面的代码返回错误消息“无法读取未定义的属性‘值’”。该函数应该只搜索帐户列表中的值并返回以提交的字符串开头的值。在示例中,提交“000555”应返回 0。 var acc
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 4 年前。 Improve th
所以我有一个问题。今天我开始优化我的代码并达到了这一点,例如: return !this.message.startsWith("/"); 请遵循我从 here 获取优化技巧的地方。 (链接到规则)
我仍在使用 Java 开发一个项目,想问问是否有人可以帮助我? 我问我是否有可能用“startsWith”来检查一个包含多个字母的字符串? 喜欢: if (string Alpha.startsWi
类项目要求我们读取单个文本文件中包含的 10,514 首歌曲的标题、艺术家和歌词。该项目的当前部分让我们编写一个有序的展开链接列表并在标题字段上运行搜索。还编写了比较器来按标题对列表进行排序。我们必须
我加入了两个列表,一个包含总线路径,另一个包含作为总线子路径的磁盘路径。所以基本上我想加入 diskpath.startswith(buspath)。问题是 Join On 只允许在 equals 的
我有这个代码: for (var i = 0; i TypeError: r[e].startsWith is not a function > at js-cf2cc68….min.js.g
我正在阅读 Microsoft 的 Best Practices for Using Strings in the .NET Framework . 它给出了以下示例作为对 StringCompari
我正在寻找一个集合来存储键值对,其中值应该根据键 startswith 条件返回。 例如对于给定的集合:(a,123) (ab,234) (abcd,5434) 如果我执行 map.get(a) 它应
有没有办法检查一个字符串是否以不同的字母开头,而不是只检查一次。 下面是我当前的代码: myString.startsWith('M') || myString.startsWith('L
函数:startswith() 作用:判断字符串是否以指定字符或子字符串开头 1、函数说明 语法:string.startswith(str, beg=0,end=len(string))
在网站上没有找到这个,但我确实找到了 open bug on Github在撰写本文时,唯一的解决方案是使用 GatsbyImage。学习将 Gatsby 项目从 2 转换为 3 我已经安装了 gat
我是 PowerShell 的新手,如果字符串不是以特定字符开头,我正在尝试运行一些代码,但是我无法让它处理多个字符。 这是工作正常的代码。 if (-Not $recdata.StartsWith
我需要查看文本的第一行是否以 By 开头,如果是,则剪切整行并将其存储在变量中,并删除所有空白行,直到下一段开始。查找 By 的方法需要不区分大小写,并且前面也可能有一些空格。如果第一行不是以 By
当我像这样使用 odata 时:$filter=startswith(tolower(firstName),tolower('A'))它不起作用。 我想知道tolower和toupper是否可以和st
这个问题在这里已经有了答案: Conditional statement inside a match case (2 个答案) 关闭 4 个月前。 有没有办法像下面这样使用匹配大小写来选择字符串结
我有一个这样的查找: Lookup plsBase = (Lookup)(Query($@"Select ...").ToLookup(s => s.ip, o => o)); 当我通过按键访
当我像这样使用 odata 时:$filter=startswith(tolower(firstName),tolower('A'))它不起作用。 我想知道tolower和toupper是否可以和st
我是一名优秀的程序员,十分优秀!