Question: How can we increase block.number on Ganache for testing purpose ?
If not possible do you know an alternative like passing X fake transactions to artificially increase block.number.

Or if we have to use a private chain: is it possible to change the time between blocks for faster testing ?

Best regards

Answer: 
You can increase `block.timestamp` (aka `now`):

```
web3.currentProvider.send({method: "evm_increaseTime", params: [numOfSeconds]});

```

Note that this method is a Ganache-extension of the standard.

So do not count on it on other node types (Geth, Parity, etc).

Also note that the code above is valid for web3.js v0.x.

You might need to run it asynchronously in web3.js v1.x.
With ethers, you can increase the next block timestamp using:

```
await ethers.provider.send("evm_increaseTime", [numSecondsToIncreaseBy]);
await ethers.provider.send("evm_mine");

```

or you can choose the next block timestamp as follows (this may be important if you need exact block timestamps, since the above method may result in a timestamp larger than intended, if other blocks are mined before your next contract function call). The new timestamp must be greater than the current block timestamp:

```
  const currTimestamp =
          (await ethers.provider.getBlock(contract.deployTransaction.blockNumber))
          .timestamp;
  await ethers.provider.send("evm_setNextBlockTimestamp", [currTimestamp + 3600]);
  await ethers.provider.send("evm_mine");

```

You can also increase the block number by repeatedly sending an `evm_mine` transaction (but I don't know if there's a way to increase the block number by an arbitrary number of blocks with one call).