У вас такая же проблема. Прочитайте этот . Отключите антивирусное программное обеспечение (mcafee). Et voila
Подтверждено антивирусным журналом:
Blocked by Access Protection rule d:\mingw64\x86_64-w64-mingw32\bin\ld.exe d:\workspace\cpp\bar\foo.exe User-defined Rules:ctx3 Action blocked : Create
Вы на правильном пути, но я столкнулся со многими расстраивающими неожиданными системными ошибками при использовании rSpec, наблюдателями и фиктивными объектами. Когда я - спецификация, тестирующая мою модель, я не хочу должным быть обрабатывать поведение наблюдателя в своих ожиданиях сообщения.
В Вашем примере, нет действительно хорошего пути к спецификации "set_status" на модели без ведома того, что наблюдатель собирается сделать к нему.
Поэтому мне нравится использовать "Никакие Чрезмерно любопытные люди" плагин. , Учитывая Ваш код выше и использование Никакого плагина Чрезмерно любопытных людей, я был бы спецификация модель как это:
describe Person do
it "should set status correctly" do
@p = Person.new(:status => "foo")
@p.set_status("bar")
@p.save
@p.status.should eql("bar")
end
end
Вы можете спецификация Ваш типовой кодекс, не имея необходимость волноваться, что существует наблюдатель там, который собирается войти и ударить Ваше значение. Вы были бы спецификация что отдельно в person_observer_spec как это:
describe PersonObserver do
it "should clobber the status field" do
@p = mock_model(Person, :status => "foo")
@obs = PersonObserver.instance
@p.should_receive(:set_status).with("aha!")
@obs.after_save
end
end
, Если Вы ДЕЙСТВИТЕЛЬНО ДЕЙСТВИТЕЛЬНО хотите протестировать двойной класс Модели и Наблюдателя, можно сделать это как это:
describe Person do
it "should register a status change with the person observer turned on" do
Person.with_observers(:person_observer) do
lambda { @p = Person.new; @p.save }.should change(@p, :status).to("aha!)
end
end
end
99% времени, я быть бы тест спецификации с выключенными наблюдателями. Это просто легче тот путь.
Правовая оговорка: я на самом деле никогда не делал этого на месте производства, но похоже, что разумный путь состоял бы в том, чтобы использовать фиктивные объекты, should_receive
и друзья, и вызвать методы на наблюдателя непосредственно
, Учитывая следующую модель и наблюдателя:
class Person < ActiveRecord::Base
def set_status( new_status )
# do whatever
end
end
class PersonObserver < ActiveRecord::Observer
def after_save(person)
person.set_status("aha!")
end
end
я записал бы спецификацию как это (я выполнил ее, и она передает)
describe PersonObserver do
before :each do
@person = stub_model(Person)
@observer = PersonObserver.instance
end
it "should invoke after_save on the observed object" do
@person.should_receive(:set_status).with("aha!")
@observer.after_save(@person)
end
end
io.sockets.broadcast.emit
не корректно,broadcast
потребности знать, который снабдил сокетом для исключения/игнорирования из испускания, таким образом, у Вас есть два варианта: 1) от глобального io->io.sockets.in(namespace).socket(socketID).broadcast.emit("hello")
или 2) от сокета->socket.broadcast.emit("hello")
– Claudiu Hojda 25 October 2013 в 16:13