Prueba de trufa: ¿Cómo enviar ether a un contrato desde un contrato?

Me gustaría probar el modificador a continuación

modifier isNotAContract(){
    require (msg.sender == tx.origin, 'Contracts are not allowed to interact.');
    _;
}

¿Cómo puedo invocar una función usando este modificador por un contrato?

¡Se prefiere la sintaxis de Javascript!

Los modificadores solo se pueden usar en funciones de solidez, no desde una llamada externa directamente.
Sí, lo sé. Sin embargo, tengo una función que usa el modificador. ¿Cómo puedo simular una llamada desde un contrato? ¿Como await a.buy( {value: 5000000, from: contract_two});sin realmente escribir e implementar un contrato?
No puede, deberá crear un contrato de prueba o simulado para ese propósito

Respuestas (1)

Contratos:

contract A {
    modifier isNotAContract(){
        require (msg.sender == tx.origin, 'Contracts are not allowed to interact.');
        _;
    } 

    function f() public isNotAContract {
        // ...
    }
}

contract B {
    A a = new A();
    function f() public {
        a.f();
    }
}

En Trufa:

var b = await B.new()
await b.f();    // should fail