在dart中的函数中对函数进行存根/模拟/监视
在过去的几天里,我一直在使用Dart进行一些单元测试。我在函数中测试一个函数时看到了一些奇怪的功能,我会模拟一个函数来返回一些东西,但它不会改变前面的函数。代码和输出如下所示: 主要类别: 创建的测试: 输出: 16 十六, 为什么输出不正确 16 110在dart中的函数中对函数进行存根/模拟/监视,dart,Dart,在过去的几天里,我一直在使用Dart进行一些单元测试。我在函数中测试一个函数时看到了一些奇怪的功能,我会模拟一个函数来返回一些东西,但它不会改变前面的函数。代码和输出如下所示: 主要类别: 创建的测试: 输出: 16 十六, 为什么输出不正确 16 110 即使在刺杀了间谍,使其无法返回100 Spy在mockito中不受欢迎。 相反,建议您对存根的一部分进行手工编码(或使用代码生成技术)(请参阅) 我不确定你想做什么,但这是我想到的: import 'package:mockito/mocki
即使在刺杀了间谍,使其无法返回100 Spy在mockito中不受欢迎。 相反,建议您对存根的一部分进行手工编码(或使用代码生成技术)(请参阅) 我不确定你想做什么,但这是我想到的:
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
abstract class CalcInterface {
int sum(int i, int z);
int addOne(int i);
}
abstract class BaseCalc implements CalcInterface {
int sum(int i, int z) {
return addOne(i) + z;
}
}
class Calc extends Object with BaseCalc implements CalcInterface {
int sum(int i, int z) {
return addOne(i) + z;
}
int addOne(int i) {
return i + 1;
}
}
class MockCalc extends Mock with BaseCalc implements CalcInterface {}
main() {
test("hello", () {
var mocked = new MockCalc();
when(mocked.addOne(5)).thenReturn(100);
expect(mocked.sum(5, 10), 110);
verify(mocked.addOne(5)).called(1);
});
}
尽管间谍活动不受欢迎。有没有办法通过间谍存根获得与上述相同的结果?否则,您是否建议创建接口和抽象类来测试测试类中的功能?
test("hello", () async{
var ToBeTestedSpy = spy(new ToBeTested(), new ToBeTested(param1,param 2));
print(ToBeTestedSpy.sum(5, 10));
when(ToBeTestedSpy.addOne(5)).thenReturn(100);
print(ToBeTestedSpy.sum(5, 10));
});
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
abstract class CalcInterface {
int sum(int i, int z);
int addOne(int i);
}
abstract class BaseCalc implements CalcInterface {
int sum(int i, int z) {
return addOne(i) + z;
}
}
class Calc extends Object with BaseCalc implements CalcInterface {
int sum(int i, int z) {
return addOne(i) + z;
}
int addOne(int i) {
return i + 1;
}
}
class MockCalc extends Mock with BaseCalc implements CalcInterface {}
main() {
test("hello", () {
var mocked = new MockCalc();
when(mocked.addOne(5)).thenReturn(100);
expect(mocked.sum(5, 10), 110);
verify(mocked.addOne(5)).called(1);
});
}