我是Flutter Mocktail的新手,我想知道它是如何工作的,因为对我来说,它看起来像我只是注入一些值,这些值被验证,而实际上并没有确保功能按预期工作。
下面是一个例子:
test('Dices are used', () {
when(() => dices.diceOne.use()).thenReturn(true);
when(() => dices.areUsed()).thenReturn(false);
expect(dices.areUsed(), false);
when(() => dices.diceTwo.use()).thenReturn(true);
when(() => dices.areUsed()).thenReturn(true);
expect(dices.areUsed(), isTrue);
});
//Dice
void use() {
if (isDoubleDice) {
isDoubleDice = false;
} else {
used = true;
}
}
//Dices
bool areUsed() {
return diceOne.used && diceTwo.used;
}
我的场景如下:
- 使用第一个骰子时,确保areUsed为false
- 在使用第二个骰子后,确保areUsed为True
对我来说,看起来我在这里所做的一切实际上只是“好吧,我在这一行从模拟器中分配了true,在下一行我将确保它实际上是true。
有没有人能解释一下这个模拟尾巴在做这样的事情时到底想达到什么目的?
即使在mocktail's documentation example有这一部分:
class Cat {
String sound() => 'meow!';
bool likes(String food, {bool isHungry = false}) => false;
void eat<T extends Food>(T food) {}
final int lives = 9;
}
// A Mock Cat class
class MockCat extends Mock implements Cat {}
test('example', () {
// Stub a method before interacting with the mock.
when(() => cat.sound()).thenReturn('purr');
// Interact with the mock.
expect(cat.sound(), 'purr');
它在这里测试什么?它只是为声音分配一个随机字符串,然后期望在调用cat.sound时,结果是前一行分配的字符串。这里到底测试了什么,这种方法有什么用?
1条答案
按热度按时间bd1hkmkf1#
如何使用mocktail的简单示例。
在我的示例中,我使用
MockCat
来测试CatOwner
类。这使我能够快速更改Cat
类中函数的结果,而无需启动新的Cat
和新的CatOwner
示例。mocktail中的文档只向您展示了库是如何工作的。不知道怎么用。