Это не работает в последних версиях Moq (по крайней мере начиная с 3,1), он должен быть указан в
Verify
метод, как упомянуто в ответе.
На самом деле, лучше указать .AtMost(0)
после оператора Returns.
var m = new Mock<ISomething>();
m.Expect(x => x.Forbidden()).Returns("foo").AtMost(0);
, Хотя "броски" также работает, AtMost(0)
, более выразительно, по моему скромному мнению.
function Engine(size) {
var privateVar;
function privateMethod () {
//...
}
this.publicMethod = function () {
// with access to private variables and methods
};
this.engineSize = size; // public 'field'
}
function Car() { // generic car
this.engine = new Engine();
}
function BMW1800 () {
this.engine = new Engine(1800);
}
BMW1800.prototype = new Car(); // inherit from Car
var myCar = new BMW1800();
Так вы действительно хотите знать, как один объект может содержать другой? Вот очень простое преобразование вашего примера:
function Engine()
{
this.EngineSize=1600;
}
function Car()
{
this.engine=new Engine();
}
var myCar=new Car();
function Engine(){ // this is constructor. Empty since Engine do nothing.
}
Engine.prototype.EngineSize=null; // this is public property
function Car(){ // this is Car constructor. It initializes Engine instance and stores it in Engine public property
this.Engine =new Engine();
}
Car.prototype.Engine =null;
Когда вы создадите новый экземпляр автомобиля. Конструктор автомобилей создаст новый экземпляр Engine и назначит его свойству Engine экземпляра Car.